在发生灾难后还原 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 群集,需要一个空的工作负荷群集。 需要以下先决条件:
- 设置和群集物理主机。
- 配置所需的存储:
- 对于 SMB: 使用容器存储接口(CSI)文件驱动程序。
- 对于本地存储: 使用容器存储接口(CSI)磁盘驱动程序。
- 工作负荷群集备份可用: 使用 Velero 备份、还原工作负荷群集。
- AKS 管理群集安装在新硬件上,也可以使用本文的步骤 1-5 在新硬件上安装新的管理群集: 使用 PowerShell 在 Azure Stack HCI 群集上设置 Kubernetes。
- 还原备份需要一个空的工作负荷群集。 请参阅 使用 Velero 备份、还原工作负荷群集。
从管理群集损坏中恢复
从管理群集损坏中恢复需要卸载 AKS 并重新安装管理群集和所有工作负荷群集。 工作负荷群集可以从 Velero 备份还原到空的工作负荷群集。
需要以下先决条件:
- 工作负荷群集备份: 使用 Velero 备份、还原工作负荷群集。
- 为以前的网络、存储和群集设置备份 AKS 配置。 群集设置包括控制平面、负载均衡器和工作器节点 VM 的大小和计数。 例如,如果旧群集有 3 个 Standard_A2_V2控制平面 VM,则必须在新环境中创建 3 个控制平面 VM。
若要从管理群集损坏中恢复,请执行以下步骤:
- 卸载 AKS: Uninstall-AksHci。
- 使用本文的步骤 1-5 安装新的 AKS 管理群集: 使用 PowerShell 在 AKS 群集上设置 Kubernetes。
- 使用本文中的步骤 6 创建具有所需节点池的工作负荷群集。 需要为从备份还原的每个工作负荷群集创建单独的工作负荷群集。
- 可以使用本文: AKS 的 New-AksHciCluster 在创建工作负荷群集期间配置多个控制平面 VM 和负载均衡器 VM。
- 配置所需的存储:
- 对于 SMB: 使用容器存储接口(CSI)文件驱动程序。
- 对于本地存储: 使用容器存储接口(CSI)磁盘驱动程序。
- 从备份还原所有工作负荷群集。
常见问题解答
管理群集中内置了哪些复原能力?
每个 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