首页 > 解决方案 > aks:尝试创建负载均衡器时出现未经授权的错误

问题描述

尝试在 AKS 中创建负载平衡器时出现以下错误,

{"error":{"code":"AuthorizationFailed","message":"对象 id 为 '85e23f21-xxxxxxxxxxx' 的客户端 '85e23f21-xxxxxxxxxxx' 无权执行操作 'Microsoft.Network/virtualNetworks/subnets/ read' over scope '/subscriptions/xxxx-xxxx-xxxx-xxxx-xxxx/resourceGroups/my-vnet/providers/Microsoft.Network/virtualNetworks/my-vnet/subnets/my-subnet' 或范围无效。如果访问最近被授予,请刷新您的凭据。"}}

此处的客户端 ID 和对象 ID 相同,这是托管标识的 principalId,因为我的 AKS 群集启用了托管标识。

❯ az aks show -g my-rg -n my-aks --query "identity" { "principalId": "85e23f21-xxxxxxxxxxx", "tenantId": "xxxxxxxxxxxxxxxxxxxxx", "type": "SystemAssigned", "userAssignedIdentities" : 空值 }

我还azure RBAC为我的 aks 集群启用了

az aks update -g myResourceGroup -n myAKSCluster --enable-azure-rbac

这里缺少什么,如何授予权限?请帮忙。

标签: azureazure-aks

解决方案


这可能是因为您的 VNet 不在工作节点资源组中,因此系统分配的标识默认只能管理该资源组内的资源。您需要对集群系统分配的托管标识的主体 ID 执行角色分配,以授予其访问该资源组之外的托管资源的权限。从Azure 文档

笔记

要创建和使用您自己的 VNet、静态 IP 地址或附加的 Azure 磁盘(其中资源位于工作程序节点资源组之外),请使用集群系统分配的托管标识的 PrincipalID 来执行角色分配。


推荐阅读