將 Azure Kubernetes Service (AKS) 叢集重新放置到另一個區域
本文涵蓋將 Azure Kubernetes Service 叢集重新放置到另一個區域的指引。
有各種原因讓您想要將現有的 Azure 資源從某個區域移至另一個區域。 您可能想要:
- 利用新的 Azure 區域。
- 只部署特定區域中可用的功能或服務。
- 符合內部原則和治理需求。
- 與公司合併和收購保持一致
- 符合容量規劃需求。
注意
具有快速發行週期的客戶常會利用 CI/CD 管線。 在這類情況下,您可以考慮變更組建和發行管線,而不是在目標區域中重新部署 AKS 叢集。
必要條件
開始重新放置規劃階段之前,請先檢閱下列必要條件:
確定目標區域有足夠的容量 (VM SKU) 可容納新的叢集節點。
驗證您具有目標訂用帳戶的資源建立權限。 確認 Azure 原則並未限制可部署 AKS 的區域。
(選擇性) 收集您先前用來佈建來源 AKS 叢集的基礎結構即程式碼 (IaC) 範本或指令碼。
收集 Kubernetes 資訊清單,以在目標叢集內重新建立應用程式工作負載。
提示
評估用於工作負載部署的 GitOps 方法,其中,Kubernetes 設定資訊清單會儲存在 Git 存放庫中,並且由執行於叢集內的 GitOps 運算子 (例如 Flux) 自動套用。 使用 GitOps 方法將工作負載重新部署至不同的叢集,就像安裝 GitOps 控制器並將其指向存放庫一樣簡單。
檢閱叢集輸入實作。
記錄將公用網域指向叢集輸入端點所需的 DNS 變更。
檢閱叢集是否儲存了任何狀態資料,例如,需要移轉至目標叢集的任何持續性磁碟區。
記錄公用 TLS 憑證管理和發佈。
擷取任何定義於 AKS API 服務允許清單中的 IP 位址。
了解所有相依資源。 某些資源可能是:
- 佇列、訊息匯流排、快取引擎
- Azure Key Vault
- 受控識別
- 虛擬網路設定。 使用 Azure 進階網路模型時請定義足夠的子網路大小,以因應容器 IP 成長
- 公用 IP 位址
- 虛擬網路閘道 (VNG)。 如果需要與目標區域中的內部部署環境進行站對站通訊,則必須在目標虛擬網路中建立 VNG。
- Azure 私人端點。 必須檢閱使用私人連結端點的 Azure PaaS 資源,並且在目標區域中建立新的私人連結執行個體,例如 ACR、Azure SQL DB、KeyVault 等。
- Azure 應用程式閘道
- Azure DNS
- Azure 防火牆
- Azure 監視器 (容器深入解析)
- Azure Container Registry 可在 ACR 執行個體之間複寫映像。 為了在提取映像時獲得最佳效能,登錄應存在於目標區域中。
注意
如果您使用 Azure Container Registry 向容器登錄進行驗證,即可為新 AKS 叢集的受控識別授與
AcrPull
RBAC 角色。 - Azure 受控磁碟
- Azure 檔案
準備
開始進行叢集重新配置程序前,請確實完成下列準備工作:
若要容納 AKS 叢集節點和 Pod,使用 Azure CNI 網路時,請部署有許多子網路具備足夠大小的虛擬網路。
如果使用 Azure Key Vault,請部署 Key Vault。
確定相關的 TLS 輸入憑證可供部署使用,最好是在安全存放區中,例如 Azure Key Vault。
部署容器登錄。 自動同步處理來源登錄映像,或重建新映像並使用 CI/CD 管線或指令碼將其推送至目標登錄。
(選擇性) 部署 Azure 應用程式閘道來處理輸入流量,應用程式閘道輸入控制器 (AGIC) 可與叢集緊密整合
部署叢集工作負載所需的任何資料來源,並還原或同步處理來源資料。
執行定義於 CI/CD 管線中、用來部署來源叢集及其相依服務的現有 IaC 成品。 變更程式碼或範本輸入參數,以重新部署至不同的資源群組和 Azure 區域。
重新部署
依照下列步驟部署 AKS 叢集,而無須進行資料移轉:
若要在 Azure 中建立目標環境,請在本機工作站上手動執行現有的 IaC 成品。
如果沒有現有的 IaC 資產,目前的叢集設定可以匯出為 ARM 範本,並且對目標區域執行。 IaC 範本可以從頭建立,或是使用 Bicep、JSON、Terraform 或其他解決方案從範例範本修改。
注意
- Private Link 連線、ACR 連線的登錄和 Azure 監視器工作區資料來源目前不使用此方法匯出,因此在執行之前必須先從產生的範本中移除。
將容器工作負載部署至 AKS 叢集,有兩種方式可達到此目的:
- 提取。從存放庫中提取資訊清單,並由執行於叢集內的控制器套用,我們稱之為 GitOps 方法。
- 推送。 使用 Kubernetes API 服務和 kubectl 命令列工具 (從 CI/CD 管線或本機工作站),將資訊清單推送至叢集。
若要確保新叢集會正常執行,請執行測試和驗證。
將公用 DNS 項目變更為指向目標叢集的外部輸入 IP (Azure 公用 Load Balancer IP 或應用程式閘道公用 IP)。
使用全域負載平衡解決方案 (例如 Azure DNS 或 Azure 流量管理員) 的部署,必須將區域新增至設定。
使用資料移轉重新部署
使用本機儲存體 (例如永續性磁碟區) 在叢集內儲存資料或裝載資料庫服務的 AKS 工作負載,可備份在來源叢集上並還原至目標叢集。 若要了解如何執行備份和還原,請參閱使用 Azure CLI 備份 Azure Kubernetes Service。