本文详细介绍 Azure Kubernetes 服务(AKS)如何逐步取消对虚拟机可用性集(VMAS)的支持,以支持虚拟机(VM)。
注释
建议对 AKS 优化的 VM 使用 虚拟机节点池 。
虚拟机节点池:
- 允许集中管理、配置和更新 VM 实例。
- 允许增加或减少虚拟机实例数以响应需求或定义的计划。
- 允许单节点级控件和不同大小节点的同一系列混合,提高灵活性并提高一致性。
可用性集概述
可用性集是虚拟机(VM)的逻辑分组,可减少相关的故障同时降低相关 VM 的可能性。 可用性集将 VM 放置在不同的容错域中,以提高可靠性。
逐步退出可用性集
截至 2019 年,我们不再向 AKS 中的可用性集添加其他功能。 可用性集中不支持自 2019 年以来引入的任何功能,例如 AKS 备份。
可用性集停用日期
可用性集支持将于 2025 年 9 月 30 日完全弃用。 建议将 VMAS 上当前的所有工作负荷迁移到虚拟机节点池。 9 月 30 日之后,将不再支持该功能。 此日期后具有可用性集的群集被视为不受支持。
从可用性集迁移到虚拟机节点池
现在可以使用脚本将 AKS 群集从使用可用性集迁移到虚拟机节点池。 此脚本还会自动将群集中的基本层负载均衡器升级到标准层。
重要
此过程还会将基本 IP 迁移到标准 IP,同时保留与负载均衡器关联的入站 IP 地址。 在此过程中,会创建一个新的公共 IP,并将其关联到标准负载均衡器出站规则,以便为群集出口流量提供服务。
在您开始之前
要求
- 此脚本的最低 Kubernetes 版本为 1.27。 如果需要升级 AKS 群集,请参阅 升级 AKS 群集。
- 需要安装版本 2.76.0 Azure CLI。
- 如果群集使用私钥保管库运行密钥管理服务,则必须在迁移期间 禁用 密钥管理服务。
- 如果群集使用任何 ValidatingAdmissionWebhook 或 MutatingAdmissionWebhook,则必须在迁移之前禁用这些 Web 挂钩。
准备迁移
- 为计划内停机创建迁移计划。
- 迁移启动后,不允许回滚。
运行用于可用性集迁移的迁移脚本
- 以下命令会启动一个脚本,以便使用
az aks update命令将群集从使用可用性集迁移到虚拟机节点池,并设置--migrate-vmas-to-vms。 此脚本还将基本负载均衡器和基本 IP 升级到标准负载均衡器和标准 IP(如果适用)。
az aks update \
--name $clusterName \
--resource-group $resourceGroup \
--migrate-vmas-to-vms \
- 使用
az aks show命令验证迁移是否成功。 此命令的输出将显示群集详细信息。
az aks show \
--name $clusterName \
--resource-group $resourceGroup
当使用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 地址的资源 ID,然后列出 IP 地址来完成的。
使用以下命令获取出站 IP 地址的资源 ID:
# Get the outbound IP Resource ID
az aks show -g <myResourceGroup> -n <myAKSCluster> --query networkProfile.loadBalancerProfile.effectiveOutboundIPs[].id
使用以下命令获取资源 ID 的每个 IP 地址:
# get the new IP for each IP Resource ID
az network public-ip show --ids <IPResourceID> --query ipAddress -o tsv