AKS托管节点OS升级计划未执行升级问题求助
问题:AKS节点池按计划未执行OS镜像升级
我给AKS节点池配置了升级窗口:每周四20:00(UTC偏移-07:00),间隔1周,持续8小时。到现在已经是计划执行的第二周,次日检查发现节点池完全没升级。
当前节点镜像版本
执行命令:
az aks show --query "agentPoolProfiles[*].{name: name, image:nodeImageVersion }" --output table
输出结果:
Name Image --------- ---------------------------------------- <redacted> AKSUbuntu-2204gen2containerd-202307.27.0
可用最新镜像版本
执行命令:
az aks nodepool get-upgrades --query "{ most_recent_node_version: latestNodeImageVersion, upgrades: upgrades }" --output table
输出结果:
Most_recent_node_version ---------------------------------------- AKSUbuntu-2204gen2containerd-202308.10.0
对应的原始JSON输出:
{ "id": <redacted>, "kubernetesVersion": "1.26.6", "latestNodeImageVersion": "AKSUbuntu-2204gen2containerd-202308.10.0", "name": "default", "osType": "Linux", "resourceGroup": <redacted>, "type": "Microsoft.ContainerService/managedClusters/agentPools/upgradeProfiles", "upgrades": null }
明确当前节点池版本为AKSUbuntu-2204gen2containerd-202307.27.0,最新可用版本为AKSUbuntu-2204gen2containerd-202308.10.0。
升级计划配置
当前的aksManagedNodeOSUpgradeSchedule配置:
{ "id": <redacted>, "maintenanceWindow": { "durationHours": 8, "notAllowedDates": null, "schedule": { "absoluteMonthly": null, "daily": null, "relativeMonthly": null, "weekly": { "dayOfWeek": "Thursday", "intervalWeeks": 1 } }, "startDate": "2023-08-29", "startTime": "22:00", "utcOffset": "-07:00" }, "name": "aksManagedNodeOSUpgradeSchedule", "notAllowedTime": null, "resourceGroup": <redacted>, "systemData": null, "timeInWeek": null, "type": null }
按配置已经到第二周的执行窗口,但升级未触发,期望节点版本与最新版本一致,需排查原因。
排查要点
- 验证时区转换后的执行时间:配置的
startTime为22:00(UTC-07:00),对应UTC时间为次日05:00。确认你检查版本的时间是否确实晚于该UTC时间,避免时区差导致误判窗口已过。 - 检查自动升级开关状态:AKS节点池需开启自动升级才能触发计划升级,执行命令确认:
若返回az aks nodepool show --name <nodepool-name> --cluster-name <cluster-name> --resource-group <rg-name> --query enableAutoUpgradefalse,需开启自动升级:az aks nodepool update --name <nodepool-name> --cluster-name <cluster-name> --resource-group <rg-name> --enable-auto-upgrade true - 查看集群升级日志:在Azure门户进入AKS集群的「监控」->「日志」,执行以下查询过滤升级相关事件:
排查是否存在升级失败、资源不足或被阻止的报错信息。ContainerServiceNodeLogs | where Message contains "upgrade" | sort by TimeGenerated desc - 检查升级锁定状态:确认节点池是否被暂停升级,执行命令:
若返回az aks nodepool show --name <nodepool-name> --cluster-name <cluster-name> --resource-group <rg-name> --query pauseUpgradetrue,需取消暂停:az aks nodepool update --name <nodepool-name> --cluster-name <cluster-name> --resource-group <rg-name> --pause-upgrade false - 确认升级计划绑定状态:验证节点池的升级计划配置是否与预期一致,执行命令:
az aks nodepool show --name <nodepool-name> --cluster-name <cluster-name> --resource-group <rg-name> --query osUpgradeSchedule - 检查节点及Pod状态:
- 执行
kubectl get nodes确认所有节点处于Ready状态; - 执行
kubectl describe node <node-name>查看是否有Pod驱逐失败的事件; - 检查是否存在Pod中断预算(PDB)限制了节点排空,执行
kubectl get pdb查看相关配置。
- 执行
内容的提问来源于stack exchange,提问作者SpillCoffee
相关产品推荐
相关产品推荐

