本文介绍如何将基本负载均衡器实例升级到 Azure Kubernetes 服务(AKS)上的标准负载均衡器。 建议对所有生产实例使用标准负载均衡器。 它为基础结构提供了许多 关键差异 。 有关从基本负载均衡器升级到 AKS 外部的标准负载均衡器的指导,请参阅 基本负载均衡器升级的官方指南。
重要
基本负载均衡器将于 2025 年 9 月 30 日停用。 有关详细信息,请查看官方公告。 如果当前使用的是基本负载均衡器,请确保在停用日期之前升级到标准负载均衡器,以避免群集不受支持。 本文可帮助你完成升级过程。
注释
对于同时使用可用性集和基本负载均衡器的群集,需要运行一个单独的 az aks update 命令来执行两次迁移(可用性集到虚拟机节点池和基本负载均衡器到标准负载均衡器)。 有关执行此迁移的步骤,请参阅 可用性集迁移 指南。
在您开始之前
在开始迁移之前,请查看以下信息:
- 迁移期间发生停机。 请相应地规划停机时间。
- 迁移开始后,不允许回滚。
- 此过程还会将基本 IP 迁移到标准 IP,同时使与负载均衡器关联的入站 IP 地址保持不变。 创建新的公共 IP 并将其关联到标准负载均衡器出站规则,以便为群集出口流量提供服务。
先决条件
群集必须满足以下先决条件,然后才能执行迁移:
- 此脚本的最低 Kubernetes 版本为 1.27。 如果需要升级 AKS 群集,请参阅 升级 AKS 群集。
- 需要安装 Azure CLI。 所需的最低版本为 2.76.0。
- 如果群集使用私钥保管库运行密钥管理服务,则需要在执行迁移之前禁用密钥管理服务。 有关详细信息,请参阅 “关闭 KMS”。
- 在执行迁移之前,需要禁用任何
ValidatingAdmissionWebhooks或MutatingAdmissionWebhooks。
将基本负载均衡器升级到标准负载均衡器
使用
az aks update命令,并将--load-balancer-sku标志设置为Standard,将基本负载均衡器升级为标准负载均衡器。az aks update \ --name $CLUSTER_NAME \ --resource-group $RESOURCE_GROUP \ --load-balancer-sku=Standard使用
az aks show命令验证迁移是否成功。az aks show \ --name $CLUSTER_NAME \ --resource-group $RESOURCE_GROUP在输出中,确认类型
load-balancer已设置为Standard。验证所有 Pod 和服务是否都使用
kubectl get pods和kubectl get svc命令成功运行。kubectl get svc -A kubectl get pods -A
确认新的出站 IP 地址
可以通过确认与 IP 地址关联的资源 ID,然后列出 IP 地址来鉴定与出站规则相关的新 IP 地址。
使用
az aks show命令获取出站 IP 地址的资源 ID。az aks show --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --query networkProfile.loadBalancerProfile.effectiveOutboundIPs[].id使用
az network public-ip show命令获取每个资源 ID 的新 IP 地址。az network public-ip show --ids $IP_RESOURCE_ID --query ipAddress -o tsv
FAQ
创建新的 AKS 群集或进行升级时,为什么会出现 Error: “Load Balancer SKU 'basic' is invalid; must use 'standard'.?
Microsoft 已停止支持基本负载均衡器 SKU 用于某些 AKS 操作,创建操作现在某些区域中遭到阻止。
若要解决此问题,请确保在创建新群集时指定 --load-balancer-sku standard 。 例如:
az aks create \
--name $CLUSTER_NAME \
--resource-group $RESOURCE_GROUP \
--load-balancer-sku standard
为什么我不能将基本负载均衡器就地更改为标准负载均衡器?
负载均衡器 SKU 在 AKS 中创建后是不可变的,因为它是群集拥有的托管资源。
可以使用以下选项之一解决此问题:
-
选项 1:使用
az aks update run命令将基本负载均衡器升级到标准负载均衡器。 有关详细信息,请参阅 Azure Kubernetes 服务(AKS)上的升级基本负载均衡器。 - 选项 2:使用标准负载均衡器(蓝绿迁移)创建新的 AKS 群集,并移动任何现有工作负载。
在从基本负载均衡器升级到标准负载均衡器后,为什么找不到我的公网IP?
在迁移期间,负载均衡器对象丢失了对公共 IP 资源的引用。 如果 IP 绑定到基本 SKU 负载均衡器且未反弹,可能会出现这种情况。
若要解决此问题,请执行下列操作:
确保新标准公共 IP 存在于正确的资源组中。
使用以下配置在服务清单中重新关联它:
annotations: service.beta.kubernetes.io/azure-load-balancer-ipv4: <your-ip>
在没有公共 IP 的专用群集上迁移负载均衡器时,为什么在迁移期间仍创建公共 IP?
outboundType如果是LoadBalancer,则无论负载均衡器 SKU 如何,AKS 都会自动预配公共 IP(PIP)。
若要解决此问题,请执行下列操作:
- 将
outboundType更改为userDefinedRouting以实现完全专用群集。 - 确保通过 Azure 防火墙/NVA 配置自定义出站路由。
为何在内部负载均衡器设置中迁移失败?
当前迁移工具不支持内部虚拟网络(VNet)负载均衡器(基本到标准)。
若要解决此问题,请执行下列操作:
- 使用标准负载均衡器在同一 VNet 中重新创建群集。
- 部署工作负载并验证内部名称解析。
节点池正在使用可用性集。 即使负载均衡器迁移后,我仍然遇到问题吗?
是的。 如果您的节点池使用可用性集,该功能将在 2025 年 9 月 30 日之后不再在 AKS 中受支持。
若要解决此问题,请执行下列操作:
- 对于同时使用可用性集和基本负载均衡器的群集,必须运行一个单独的
az aks update命令来执行两次迁移(可用性集到虚拟机节点池和基本负载均衡器到标准负载均衡器)。 有关执行此迁移的步骤,请参阅 可用性集迁移 指南。 - 升级后,必须使用 Azure CLI 或 REST API 来执行 CRUD作或管理池。 检查 限制。
升级前是否需要删除默认 Webhook?
否。 如果在集群中不存在其他 ValidatingAdmissionWebhooks 或 MutatingAdmissionWebhooks,则可以在迁移过程中保留控制平面中的默认 Webhook。
默认 Webhook 包括:
aks-node-mutating-webhookwebhook-admission-controllernode-validating-webhook
运行迁移命令需要哪些访问权限?
若要运行迁移命令,需要:
- 订阅或资源组中的参与者或所有者角色。
- Azure CLI 版本必须≥ 2.72.0。
- AKS 预览版扩展版本必须≥ 0.5.170。
如何查看密钥管理服务 (KMS) 加密是否已禁用?
可以使用命令检查 KMS 加密是否在 AKS 群集 az aks list 上启用。
az aks list --query "[].{Name:name, KmsEnabled:securityProfile.azureKeyVaultKms.enabled, KeyId:securityProfile.azureKeyVaultKms.keyId}"
如果输出显示
"KmsEnabled": null,则表示未为该群集启用 KMS 加密,你可以跳过任何步骤来禁用它。 例如:{ "KeyId": null, "KmsEnabled": null, "Name": "myAKSCluster" }, ...如果启用了 KMS 并想要禁用它,请参阅 “关闭 KMS 加密”。
后续步骤
有关 AKS 网络的详细信息,请参阅 Azure Kubernetes 服务(AKS)的网络概念。