CustomPrivateDNSZoneMissingPermissionError 错误代码疑难解答

本文介绍如何识别和解决尝试创建或更新 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 找不到所需的权限,便会阻止该操作,以防止群集进入失败状态。

解决方案

若要创建缺少的角色分配,请执行以下步骤:

  1. 通过运行 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 命令。

  2. 通过运行 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反馈社区提交产品反馈。