You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AKS集群升级失败:陷入启用托管身份与升级的循环困境

解决AKS启用托管身份时自动升级失败的循环问题

先排查升级失败的核心原因

  • 用Azure CLI拉取集群升级详情和事件日志,定位具体错误:
    # 查看集群升级配置历史
    az aks show -g <资源组名> -n <集群名> --query upgradeProfile
    # 查看kube-system下的事件日志,聚焦升级相关报错
    az aks get-credentials -g <资源组名> -n <集群名>
    kubectl get events -n kube-system --sort-by='.metadata.creationTimestamp'
    
    重点关注节点池升级时的错误,比如资源不足、RBAC权限缺失、托管身份权限不够,或是旧版本API兼容性问题。

分步完成托管身份启用+版本升级

不要直接在门户操作,改用CLI合并两步操作,避免触发不必要的自动升级:

  1. 创建用户分配的托管身份(比系统分配身份更易管控权限):
    az identity create -g <资源组名> -n <托管身份名称>
    
  2. 给托管身份分配AKS必需的权限:
    • 自定义VNet的Contributor权限(如果集群用了自定义虚拟网络):
      az role assignment create --assignee <托管身份客户端ID> --role "Contributor" --scope <VNet资源ID>
      
    • 集群资源组的Contributor权限:
      az role assignment create --assignee <托管身份客户端ID> --role "Contributor" --scope <集群资源组ID>
      
  3. 一次性完成托管身份启用和目标版本升级:
    az aks update -g <资源组名> -n <集群名> --enable-managed-identity --assign-identity <托管身份资源ID> --kubernetes-version 1.24.10
    

常见失败场景修复

  • 节点资源不足:升级前扩容节点池,或清理节点上的闲置Pod、镜像,释放资源后重试。
  • 托管身份权限缺失:用az role assignment list --assignee <托管身份客户端ID>检查权限,补全VNet、磁盘、负载均衡器等资源的访问权限。
  • API版本兼容性问题:1.23到1.24废弃了PodSecurityPolicy、v1beta1版本的Ingress等API,先替换集群中使用这些废弃API的资源,再执行升级。
  • 网络访问受限:检查NSG、防火墙规则,确保节点能访问Azure容器镜像仓库、AKS管理服务的出站流量。

异常回滚操作

如果升级后集群不可用,先回滚到原版本并恢复服务主体:

az aks upgrade -g <资源组名> -n <集群名> --kubernetes-version 1.23.9 --service-principal <SP客户端ID> --client-secret <SP密钥>

修复问题后再重新尝试切换托管身份+升级操作。

内容的提问来源于stack exchange,提问作者Vikram Giriraj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 19:13:10