azure - 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
这里缺少什么,如何授予权限?请帮忙。
解决方案
这可能是因为您的 VNet 不在工作节点资源组中,因此系统分配的标识默认只能管理该资源组内的资源。您需要对集群系统分配的托管标识的主体 ID 执行角色分配,以授予其访问该资源组之外的托管资源的权限。从Azure 文档:
笔记
要创建和使用您自己的 VNet、静态 IP 地址或附加的 Azure 磁盘(其中资源位于工作程序节点资源组之外),请使用集群系统分配的托管标识的 PrincipalID 来执行角色分配。
推荐阅读
- docusignapi - 尝试将文档添加到信封并获取用户锁定错误消息时出错
- spring - 我的弹簧控制器测试没有进入控制器
- javascript - parameter.includes() 不是函数
- android - Recyclerview 将项目滚动到顶部并为内部视图的大小滚动更多
- powershell - 脚本没有从文本文件中挑选所有服务器
- node.js - mongodb我无法通过另一个集合中的城市ID获取城市信息
- swift - iOS中推送通知中的按钮不出现(swift)
- wordpress - wordpress 多站点之间的链接页面
- javascript - :nth-child(even) 选择器按具有特定元素的类
- android - android同步方法无法按预期工作