在災害發生后還原 Kubernetes 叢集的狀態
適用於:Azure Stack HCI 22H2 上的 AKS、Windows Server 上的 AKS
在 Azure 本機或 Windows Server 上的 AKS 中,管理叢集會部署為每個部署的單一獨立虛擬機(VM),使其成為單一失敗點。 請務必注意,管理叢集中斷不會影響在工作負載叢集中執行的應用程式。 當管理叢集 VM 失敗時,工作負載叢集(和工作負載)會繼續執行,但您無法執行第 2 天作業。 例如,您無法建立新的工作負載叢集、建立或調整節點集區,或升級 Kubernetes 版本,直到 VM 還原為止。
管理叢集是 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 本機叢集上設定 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 備份中包含哪些內容?
檔案名稱 | 內容描述 |
---|---|
*-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 Proxy) 元數據
- 網路設定
- 儲存體設定
如何? 災害發生前備份 AKS 設定?
若要備份管理叢集組態,請開啟 PowerShell 視窗並執行下列命令:
Get-AksHciConfig | ConvertTo-Json
如何? 確定工作負載叢集的組態與災害發生前相同?
若要備份工作負載叢集組態,請開啟 PowerShell 視窗並執行下列命令:
Get-AksHciCluster -name <cluster name> | ConvertTo-Json