从 Azure Kubernetes 服务 (AKS) 中的可用性集迁移

本文详细介绍 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 挂钩。

准备迁移

  • 为计划内停机创建迁移计划。
  • 迁移启动后,不允许回滚。

运行用于可用性集迁移的迁移脚本

  1. 以下命令会启动一个脚本,以便使用 az aks update 命令将群集从使用可用性集迁移到虚拟机节点池,并设置 --migrate-vmas-to-vms。 此脚本还将基本负载均衡器和基本 IP 升级到标准负载均衡器和标准 IP(如果适用)。
az aks update \
    --name $clusterName \
    --resource-group $resourceGroup \
    --migrate-vmas-to-vms \
  1. 使用 az aks show 命令验证迁移是否成功。 此命令的输出将显示群集详细信息。
az aks show \
    --name $clusterName \
    --resource-group $resourceGroup

当使用az aks show命令时,如果群集详细信息中的type设置为VirtualMachines,并且loadbalancerSku设置为Standard,则可以验证成功迁移。

    "type": "VirtualMachines"
    "loadBalancerSku": "standard",
  1. 使用 kubectl get podskubectl get svc 命令验证所有 Pod 和服务是否都成功运行:
  kubectl get svc -A \
  kubectl get pods -A
  1. 可以通过列出出站 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

有关虚拟机节点池的详细信息