禁用本地账户且用户为AKS RBAC集群管理员时PowerShell升级AKS失败
解决PowerShell升级AKS时的资源标识操作错误
问题现象
使用PowerShell升级AKS集群时,PowerShell无报错返回,但Azure活动日志显示资源标识操作失败,错误信息为:
Failed to perform resource identity operation.
Status: 'BadRequest'. Response:
'{"error":{"code":"BadRequest","message":"The request format was unexpected, a non-UserAssigned identity type should not contain: userAssignedIdentities"}}'.
通过Azure门户可正常完成升级,但自动化场景需要使用PowerShell操作。
错误原因
直接将Get-AzAksCluster获取的集群对象通过管道传递给Set-AzAksCluster时,对象中携带了当前集群未使用的UserAssignedIdentities属性。而当前集群实际使用的是系统分配身份或无身份,Azure API检测到身份类型与携带的用户分配身份参数不匹配,因此返回BadRequest错误。
解决方案
方案1:直接调用Set-AzAksCluster并指定必要参数(推荐)
无需传递整个集群对象,直接指定资源组、集群名和目标Kubernetes版本即可,避免携带多余属性:
Set-AzAksCluster -ResourceGroupName $resourceGroupName -Name $aksClusterName -KubernetesVersion $version -AsJob
方案2:清除集群对象中的UserAssignedIdentities属性再传递
如果必须使用集群对象,先清除其中的用户分配身份属性后再执行升级:
$aksCluster = Get-AzAksCluster -ResourceGroupName $resourceGroupName -Name $aksClusterName # 移除不必要的用户分配身份属性 $aksCluster.Identity.UserAssignedIdentities = $null $aksUpgrade = $aksCluster | Set-AzAksCluster -KubernetesVersion $version -AsJob
内容的提问来源于stack exchange,提问作者NickP
相关产品推荐
相关产品推荐

