移轉至 Azure Kubernetes Service (AKS)

為協助您規劃並執行成功移轉至 Azure Kubernetes Service (AKS),本指南提供目前建議之 AKS 組態的詳細資料。 雖然本文未涵蓋每個情節,但其包含規劃成功移轉的詳細資訊連結。

在本文中,我們會簡要說明下列情節的移轉詳細資料:

  • 透過 Azure Migrate 容器化應用程式
  • 具有 Standard Load Balancer 和虛擬機器擴展集的 AKS
  • 現有的連結 Azure 服務
  • 確定有效的配額
  • 高可用性和商務持續性
  • 無狀態應用程式的考量
  • 具狀態應用程式的考量
  • 叢集設定部署

注意

視您的狀況而定,下列開放原始碼工具可協助您進行移轉:

開始之前

在移轉程序中應包含的重要做法是記得遵循常用的部署和測試模式。 在部署之前測試應用程式是確保其品質、功能和目標環境相容性的重要步驟。 這可協助您識別並修正可能會影響應用程式或基礎結構效能、安全性或可用性的任何錯誤、Bug 或問題。

使用 Azure Migrate 將應用程式移轉至 AKS

Azure Migrate 提供整合平台,可評估內部部署伺服器、基礎結構、應用程式及資料,並將其移轉至 Azure。 針對 AKS,您可以使用 Azure Migrate 來執行下列工作:

具有 Standard Load Balancer 和虛擬機器擴展集的 AKS

AKS 是一種受控服務,可提供具有較低管理額外負荷的獨特功能。 由於 AKS 是受控服務,因此您必須從 AKS 支援的一組區域中進行選取。 從現有叢集轉換為 AKS 的期間,您可能需要修改現有的應用程式,使其在 AKS 受控的控制平面上保持良好狀態。

建議您使用虛擬機器擴展集Azure Standard Load Balancer 支援的 AKS 叢集,以確保您可以取得下列功能:

虛擬機器可用性設定組支援的 AKS 叢集不支援其中許多功能。

建立具有 Standard Load Balancer 和虛擬機器擴展集的 AKS 叢集

下列範例會建立 AKS 叢集,其中包含虛擬機器 (VM) 擴展集所支援的單一節點集區。 該範例會啟用叢集節點集區上的叢集自動調整程式,並設定最少一個、最多三個節點。

  1. 使用 az group create 命令建立資源群組。

    az group create --name myResourceGroup --location eastus
    
  2. 使用 az aks create 命令建立 AKS 叢集。

    az aks create \
      --resource-group myResourceGroup \
      --name myAKSCluster \
      --node-count 1 \
      --vm-set-type VirtualMachineScaleSets \
      --load-balancer-sku standard \
      --enable-cluster-autoscaler \
      --min-count 1 \
      --max-count 3
    

現有的連結 Azure 服務

移轉叢集時,您可能已連結外部 Azure 服務。 雖然下列服務不需要重新建立資源,但需要更新先前與新叢集的連線,才能維持正常運行。

  • Azure Container Registry
  • Log Analytics
  • Application Insights
  • 流量管理員
  • 儲存體帳戶
  • 外部資料庫

確定有效的配額

由於在移轉期間會有其他 VM 部署到訂用帳戶,因此您應確認配額與限制足以讓這些資源使用。 如有必要,請要求增加 vCPU 配額

您可能需要要求增加網路配額,以確保不會耗盡 IP。 如需詳細資訊,請參閱《AKS 的網路和 IP 範圍 (英文)》。

如需詳細資訊,請參閱 Azure 訂閱與服務限制。 若要檢查您目前的配額,請前往 Azure 入口網站中的訂用帳戶刀鋒視窗,選取您的訂用帳戶,然後選取 [使用量 + 配額]

高可用性和商務持續性

如果您的應用程式無法處理停機,您必須遵循高可用性移轉情節的最佳做法。 請詳閱《複雜商務持續性規劃、災害復原,以及將 Azure Kubernetes Service (AKS) 執行時間最大化的最佳做法 (英文)》。

對於複雜的應用程式,您通常會在一段時間內移轉,而非一次性全部移轉,如此表示新舊環境可能需要透過網路進行通訊。 先前使用 ClusterIP 服務進行通訊的應用程式可能需要公開為 LoadBalancer 類型並適當地加以保護。

若要完成移轉,您需要將用戶端指向 AKS 上執行的新服務。 建議您將 DNS 更新為指向位於 AKS 叢集前方的 Load Balancer,以將流量重新導向。

Azure 流量管理員可以將客戶導向所需的 Kubernetes 叢集和應用程式執行個體。 流量管理員為 DNS 型的流量負載平衡器,可將網路流量散發到各個區域。 若要獲得最佳的效能和備援能力,請先透過流量管理員導引所有應用程式流量,再讓流量進入 AKS 叢集。

在多個叢集的部署中,客戶應該連線至流量管理員 DNS 名稱,而這個名稱又指向每個 AKS 叢集上的服務。 透過使用流量管理員端點定義這些服務。 每個端點皆是 服務負載平衡器 IP。 使用此設定,能讓您將網路流量從一個區域中的 Azure 流量管理員端點,導向至不同區域中的端點。

AKS with Traffic Manager

Azure Front Door Service 為路由傳送 AKS 叢集流量的其他選項。 透過 Azure Front Door Service,您可定義、管理及監視 Web 流量的全域路由,以針對最佳效能和即時全域容錯移轉進行最佳化,進而獲得高可用性。

無狀態應用程式的考量

無狀態應用程式移轉包含下列步驟:

  1. 將資源定義 (YAML 或 Helm) 套用至新叢集。
  2. 確保一切如預期運作。
  3. 重新導引流量以啟動新的叢集。

具狀態應用程式的考量

仔細規劃具狀態應用程式的移轉,以避免資料遺失或意外停機。

Azure 檔案

不同於磁碟,Azure 檔案服務可同時掛接到多部主機。 在 AKS 叢集中,Azure 和 Kubernetes 不會阻止您建立 AKS 叢集仍使用的 Pod。 若要避免資料遺失和意外的行為,請確保叢集不會同時寫入相同的檔案。

如果您的應用程式可以託管多個指向相同檔案共用的複本,請依照無狀態移轉步驟,將 YAML 定義部署到新叢集。

如果未定義,則可能的移轉方法包含下列步驟:

  1. 驗證應用程式是否正常運作。
  2. 將您的即時流量指向新的 AKS 叢集。
  3. 中斷舊叢集的連線。

如果您想要以空白的共用開始並複製來源資料,可以使用 az storage file copy 命令移轉資料。

移轉永續性磁碟區

如果您要將現有的永續性磁碟區移轉至 AKS,通常會遵循以下步驟:

  1. 靜止寫入應用程式。
    • 此步驟可選用且需要停機。
  2. 擷取磁碟的快照集。
  3. 從快照集建立新的受控磁碟。
  4. 在 AKS 中建立永續性磁碟區。
  5. 將 Pod 規格更新為使用現有的磁碟區,而非 PersistentVolumeClaims (靜態佈建)。
  6. 將您的應用程式部署至 AKS。
  7. 驗證應用程式是否正常運作。
  8. 將您的即時流量指向新的 AKS 叢集。

重要

如果您選擇不要靜止寫入,則需要將資料複寫到新的部署。 否則,您會錯過在擷取磁碟快照集之後所寫入的資料。

下列開放原始碼工具可協助您建立受控磁碟,並在 Kubernetes 叢集之間移轉磁碟區:

叢集設定部署

建議您使用現有的持續整合 (CI) 和持續傳遞 (CD) 管線,將已知良好的組態部署到 AKS。 您可使用 Azure Pipelines 組建應用程式並將其部署至 AKS。 複製現有的部署工作,並確保 kubeconfig 指向新的 AKS 叢集。

如果無法達成,請從現有的 Kubernetes 叢集匯出資源定義,然後將其套用至 AKS。 您可以使用 kubectl 匯出物件。 例如:

kubectl get deployment -o yaml > deployments.yaml

務必檢查輸出,並移除任何不必要的即時資料欄位。

將現有資源移至其他區域

您可能會想要將 AKS 叢集移至 AKS 支援的不同區域。 建議您在其他區域中建立新的叢集,然後將您的資源和應用程式部署到新的叢集。

如果您有在 AKS 叢集上執行的任何服務,則必須在新區域中的叢集上安裝和設定這些服務。

在本文中,我們已摘要說明下列情節的移轉詳細資料:

  • 透過 Azure Migrate 容器化應用程式
  • 具有 Standard Load Balancer 和虛擬機器擴展集的 AKS
  • 現有的連結 Azure 服務
  • 確定有效的配額
  • 高可用性和商務持續性
  • 無狀態應用程式的考量
  • 具狀態應用程式的考量
  • 叢集設定部署