问题描述
我正在尝试创建一个链接到 kubectl 上现有 PublicIP 的 Loadbalancer 服务。 虽然我是 resourceGroup(publicIP 和 k8s 集群)的所有者,但在 kubectl describe 中创建服务挂起并出现以下错误:
同步负载均衡器时出错:无法确保负载均衡器:可重试:假,重试后:0s,HTTPStatusCode:403,RawError:可重试:假,重试后:0s,HTTPStatusCode:403,RawError:{"error":{"code ":"AuthorizationFailed","message":"具有对象 ID '[OBJECT_ID]' 的客户端 '[CLIENT_ID]' 无权在范围 '/subscriptions/[SUBSCRIPTION] 上执行操作 'Microsoft.Network/publicIPAddresses/read' ]/resourceGroups/[RESOURCE_GROUP]/providers/Microsoft.Network' 或范围无效。如果最近授予了访问权限,请刷新您的凭据。"}}
我已尝试在我的 kubectl 客户端上分配所有者角色,但问题仍然存在。
az role assignment create
--role Owner
--assignee xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
AKS 1.18.14
解决方法
以下指南回答了我的问题:https://docs.microsoft.com/en-us/azure/aks/static-ip#create-a-service-using-the-static-ip-address
事实证明,所有者许可在某种程度上是不够的。添加以下权限后,我可以创建链接到现有负载均衡器的服务:
az role assignment create \
--assignee <SP Client ID> \
--role "Network Contributor" \
--scope /subscriptions/<subscription id>/resourceGroups/<resource group name>