本文介绍如何识别和解决尝试创建或更新 Microsoft Azure Kubernetes 服务 (AKS) 群集时发生的“CustomPrivateDNSZoneMissingPermissionError”错误代码。
先决条件
-
Azure CLI 版本 2.53.0 或更高版本。 若要查找已安装的版本,请运行
az --version。
症状
AKS 群集创建或更新作失败,并返回以下错误消息:
代码:CustomPrivateDNSZoneMissingPermissionError
消息:必须向服务主体或用户分配的标识授予读取和写入自定义专用 DNS 区域 <custom-private-dns-zone-resource-id> 的权限。 检查操作 Microsoft.Network/privateDnsZones/read 不允许的访问结果。
原因
在 AKS 为使用 自定义专用 DNS 区域的专用群集运行群集创建或更新作之前,它会检查群集的托管标识或服务主体是否具有控制专用 DNS 区域所需的权限。 如果 AKS 找不到所需的权限,便会阻止该操作,以防止群集进入失败状态。
解决方案
若要创建缺少的角色分配,请执行以下步骤:
通过运行 az aks show 命令获取群集专用 DNS 区域的资源 ID,并将其存储为
CUSTOM_PRIVATE_DNS_ZONE_ID变量:CUSTOM_PRIVATE_DNS_ZONE_ID=$(az aks show \ --resource-group <aks-resource-group> \ --name <aks-cluster-name> \ --query apiServerAccessProfile.privateDnsZone \ --output tsv)注释
由于自定义专用 DNS 区域的资源 ID 也显示在原始错误消息中,因此也可以将该资源 ID 分配给变量,而不是运行
az aks show命令。通过运行 az role assignment create 命令,将专用 DNS 区域参与者角色分配给群集的托管标识或服务主体:
az role assignment create --role "Private DNS Zone Contributor" \ --scope $CUSTOM_PRIVATE_DNS_ZONE_ID \ --assignee <control-plane-principal-id>
注释
将权限授予给集群的托管身份或服务主体可能需要长达 60 分钟的时间来完成。
联系我们以获得帮助
如果有疑问,可以询问 Azure 社区支持。 您还可以向Azure反馈社区提交产品反馈。