在发生灾难后还原 Kubernetes 群集的状态

适用于:Azure Stack HCI 22H2 上的 AKS、Windows Server 上的 AKS

在 Azure Stack HCI 或 Windows Server 上的 AKS 中,管理群集部署为每个部署的单一独立虚拟机(VM),使其成为单一故障点。 请务必注意,管理群集中断不会影响工作负荷群集中运行的应用程序。 管理群集 VM 发生故障时,工作负荷群集(和工作负荷)将继续运行,但无法执行第 2 天操作。 例如,在还原 VM 之前,无法创建新的工作负荷群集、创建或缩放节点池或升级 Kubernetes 版本。

管理群集是在 Windows 故障转移群集中跟踪的 VM。 它还可复原主机级中断。 换句话说,在主机发生故障期间,Windows 故障转移群集会在正常运行的主机上重启 VM。 本文提供有关如何执行以下任务的指南:

  • 在新硬件上还原 AKS 的状态(可能是新站点)。
  • 从管理群集的损坏中恢复。

在这两种情况下,必须重新创建管理群集和所有工作负荷群集。

在新硬件或新站点上还原 AKS 的状态

恢复 Kubernetes 群集的状态要求在新硬件或新位置提供管理群集。

  • AKS 支持使用 Velero 将 Kubernetes 群集备份到 Azure Blob 存储 和 MinIO。 Microsoft建议备份Azure 存储,因为它在主存储区域中提供 3 个冗余的数据副本。
  • 请考虑在 cron 作业上运行备份,以确保可用的备份满足恢复点目标。

先决条件

通过创建管理群集和空工作负荷群集,提前准备冷备用。 对于要从备份还原的每个 Kubernetes 群集,需要一个空的工作负荷群集。 需要以下先决条件:

从管理群集损坏中恢复

从管理群集损坏中恢复需要卸载 AKS 并重新安装管理群集和所有工作负荷群集。 工作负荷群集可以从 Velero 备份还原到空的工作负荷群集。

需要以下先决条件:

  • 工作负荷群集备份: 使用 Velero 备份、还原工作负荷群集。
  • 为以前的网络、存储和群集设置备份 AKS 配置。 群集设置包括控制平面、负载均衡器和工作器节点 VM 的大小和计数。 例如,如果旧群集有 3 Standard_A2_V2控制平面 VM,则必须在新环境中创建 3 个控制平面 VM。

若要从管理群集损坏中恢复,请执行以下步骤:

常见问题解答

管理群集中内置了哪些复原能力?

每个 AKS 部署都包含一个管理群集,该群集是单个独立 VM。 为了获得复原能力和高可用性,AKS 依赖于 Windows 故障转移群集来恢复 VM(如果发生中断)。

管理群集中断不会影响工作负荷群集中运行的应用程序。 当管理群集 VM 出现故障时,这会影响你执行 AKS 第 2 天操作的能力,例如创建新的工作负荷群集、创建或缩放节点池、升级 Kubernetes 版本等,直到 VM 恢复为止。 如果无法从管理群集故障中恢复,我们建议联系Microsoft 支持部门。

Velero 备份中包含哪些内容?

Filename 内容描述
*-csi-volumesnapshotclasses.json.gz 包含 csi 的文件是永久性卷快照。
*-csi-volumesnapshotcontents.json.gz 包含 csi 的文件是永久性卷快照。
*-csi-volumesnapshots.json.gz 包含 csi 的文件是永久性卷快照。
*-logs.gz 备份操作的日志输出。 运行中的相同数据: velero backup log <backupname>
*-podvolumebackups.json.gz 有关 Pod 和永久性卷的元数据。
*-resource-list.json.gz 此文件列出了备份中包含的资源。
*-volumesnapshots.json.gz 有关 Pod 和永久性卷的元数据。
*.tar.gz 元数据:命名空间、Pod 副本数、内存、cpu 数。 与从中 kubectl get deployment返回的数据相同。

Velero 备份中不包括哪些内容?

Velero 备份不包括以下项:

  • 管理群集 (AKS) 配置
  • 控制平面 VM (API 服务器) 元数据
  • 负载均衡器(HA 代理)元数据
  • 网络设置
  • 存储设置

如何实现灾难发生前备份 AKS 配置?

若要备份管理群集配置,请打开 PowerShell 窗口并运行以下命令:

Get-AksHciConfig | ConvertTo-Json 

如何实现确保工作负荷群集的配置与灾难发生前的配置相同?

若要备份工作负荷群集配置,请打开 PowerShell 窗口并运行以下命令:

Get-AksHciCluster -name <cluster name> | ConvertTo-Json 

后续步骤