共用方式為


將 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 檔案

準備

開始進行叢集重新配置程序前,請確實完成下列準備工作:

  1. 若要容納 AKS 叢集節點和 Pod,使用 Azure CNI 網路時,請部署有許多子網路具備足夠大小的虛擬網路。

  2. 如果使用 Azure Key Vault,請部署 Key Vault

  3. 確定相關的 TLS 輸入憑證可供部署使用,最好是在安全存放區中,例如 Azure Key Vault。

  4. 部署容器登錄。 自動同步處理來源登錄映像,或重建新映像並使用 CI/CD 管線或指令碼將其推送至目標登錄。

  5. 部署 Azure 監視器工作區

  6. (選擇性) 部署 Azure 應用程式閘道來處理輸入流量,應用程式閘道輸入控制器 (AGIC) 可與叢集緊密整合

  7. 部署叢集工作負載所需的任何資料來源,並還原或同步處理來源資料。

  8. 執行定義於 CI/CD 管線中、用來部署來源叢集及其相依服務的現有 IaC 成品。 變更程式碼或範本輸入參數,以重新部署至不同的資源群組和 Azure 區域。

重新部署

依照下列步驟部署 AKS 叢集,而無須進行資料移轉:

  1. 若要在 Azure 中建立目標環境,請在本機工作站上手動執行現有的 IaC 成品。

  2. 如果沒有現有的 IaC 資產,目前的叢集設定可以匯出為 ARM 範本,並且對目標區域執行。 IaC 範本可以從頭建立,或是使用 Bicep、JSON、Terraform 或其他解決方案從範例範本修改。

    注意

    • Private Link 連線、ACR 連線的登錄和 Azure 監視器工作區資料來源目前不使用此方法匯出,因此在執行之前必須先從產生的範本中移除。
  3. 將容器工作負載部署至 AKS 叢集,有兩種方式可達到此目的:

    • 提取。從存放庫中提取資訊清單,並由執行於叢集內的控制器套用,我們稱之為 GitOps 方法。
    • 推送。 使用 Kubernetes API 服務和 kubectl 命令列工具 (從 CI/CD 管線或本機工作站),將資訊清單推送至叢集。
  4. 若要確保新叢集會正常執行,請執行測試和驗證。

  5. 將公用 DNS 項目變更為指向目標叢集的外部輸入 IP (Azure 公用 Load Balancer IP 或應用程式閘道公用 IP)。

  6. 使用全域負載平衡解決方案 (例如 Azure DNS 或 Azure 流量管理員) 的部署,必須將區域新增至設定。

使用資料移轉重新部署

使用本機儲存體 (例如永續性磁碟區) 在叢集內儲存資料或裝載資料庫服務的 AKS 工作負載,可備份在來源叢集上並還原至目標叢集。 若要了解如何執行備份和還原,請參閱使用 Azure CLI 備份 Azure Kubernetes Service