本文詳細說明 Azure Kubernetes Service (AKS) 如何逐步淘汰對虛擬機可用性設定組 (VMAS) 的支援,轉而使用虛擬機器 (VM)。 我們建議在 AKS 最佳化的虛擬機上使用 虛擬機節點池 。
虛擬機節點池:
- 允許集中管理、設定和更新 VM 實例。
- 允許增加或減少虛擬機實例數目,以回應需求或定義的排程。
- 允許單一的節點層級控制和將同類型的不同大小節點進行混合,以增加靈活性並改善一致性。
這很重要
自 2025 年 9 月 30 日起,Azure Kubernetes 服務(AKS)不再支援可用性集。 此日期之後,具有可用性集的叢集將被視為不再受支援。 在此日期之前,請將所有工作負載遷移至 虛擬機節點池 ,以確保持續支援並享有增強的管理功能。 欲了解更多退休資訊,請參閱 退休 GitHub 專題。 想隨時掌握公告與更新,請參考 AKS 發布公告。
可用性設定組概觀
可用性設定組是虛擬機器 (VM) 的邏輯分組,可降低相互關聯的失敗導致相關 VM 同時關閉的機率。 可用性設定組會將 VM 放在不同的容錯網域中,以提高可靠性。
可用性設定組逐步淘汰
自 2019 年起,我們不再將其他功能新增至 AKS 中的可用性設定組。 可用性設定組不支援自 2019 年以來引進的任何功能,例如 AKS 備份。
將可用性設定組移轉至虛擬機器節點集區
現在有一種方法可以用腳本將你的 AKS 叢集從使用 Availability Sets 遷移到 Virtual Machine 節點池。 此指令碼也會自動將叢集中的基本層負載平衡器升級至標準層。
這很重要
此流程也會將您的基本 IP 移轉到標準 IP,同時保持與負載平衡器相關聯的傳入 IP 地址維持不變。 在此流程期間,系統會建立新的公用位址,並與 Standard Load Balancer 輸出規則建立關聯,以提供叢集輸出流量。
欲了解更多資訊及關於從基本負載平衡器升級至標準負載平衡器的常見問題,請參閱 Azure Kubernetes Service 上的「從基本負載平衡器升級」。
開始之前
要求
- 此腳本的最低 Kubernetes 版本為 1.27。 如果需要升級 AKS 叢集,請參閱升級 AKS 叢集 (部分機器或 AI 翻譯)。
- 您需要已安裝 Azure CLI 版本 2.76.0。
- 若叢集運行帶有私鑰保險庫的金鑰管理服務,則必須在整個遷移過程中 停用 金鑰管理服務。
- 如果叢集使用任何
ValidatingAdmissionWebhooks或MutatingAdmissionWebhooks,這些 webhook 必須在遷移前被停用。 控制平面的預設 webhook 不應該被停用。 例如aks-node-mutating-webhook,、webhook-admission-controller、aks-node-validating-webhook和 。
準備移轉
- 建立規劃停機時間的移轉計劃。
- 一旦開始移轉,就不允許復原。
執行可用性設定組移轉的移轉腳本
在以下指令中,將 <myResourceGroup> 和 <myAKSCluster> 分別替換為你的資源群組名稱和 AKS 叢集名稱。
下列命令會使用
az aks update命令並設定--migrate-vmas-to-vms,起始指令碼以將叢集從使用可用性設定組移轉至虛擬機器節點集區。 此腳本也會將基本負載平衡器與基本 IP 升級為標準負載平衡器及標準 IP(如適用)。az aks update \ --name <myAKSCluster> \ --resource-group <myResourceGroup> \ --migrate-vmas-to-vms \使用命令
az aks show驗證移轉是否成功。 指令輸出顯示叢集細節。az aks show \ --name <myAKSCluster> \ --resource-group <myResourceGroup>當使用
az aks show命令的叢集詳細資料包含type設定為VirtualMachines,並將loadbalancerSku設定為Standard時,可以驗證移轉成功。"type": "VirtualMachines" "loadBalancerSku": "standard",使用
kubectl get pods和kubectl get svc命令確認所有 Pod 和服務是否成功運行:kubectl get svc -A \ kubectl get pods -A您可以透過列出輸出 IP 位址來確認與輸出規則相關聯的新 IP 位址。 此步驟是透過先確認這些 IP 位址的資源識別碼,然後列出這些 IP 位址即可完成。
使用下列指令取得輸出 IP 位址的資源識別碼:
# Get the outbound IP Resource ID az aks show \ --resource-group <myResourceGroup> \ --name <myAKSCluster> \ --query networkProfile.loadBalancerProfile.effectiveOutboundIPs[].id請使用以下指令來取得資源 ID 的每個 IP 位址,並替換前一個指令中的
<IPResourceID>為資源 ID:# get the new IP for each IP Resource ID az network public-ip show --ids <IPResourceID> --query ipAddress -o tsv