排查 K8SAPIServerDNSLookupFailVMExtensionError 错误代码 (52) 的问题

本文讨论如何识别和解决K8SAPIServerDNSLookupFailVMExtensionError错误(也称为错误代码ERR_K8S_API_SERVER_DNS_LOOKUP_FAIL、错误号 52)(尝试启动或创建和部署Microsoft Azure Kubernetes 服务(AKS)群集时发生的错误。

先决条件

现象

尝试启动或创建 AKS 群集时,接收到以下错误消息:

代理无法解析 Kubernetes API 服务器名称。 自定义 DNS 服务器可能未正确配置,有关详细信息,请参阅 https://aka.ms/aks/private-cluster#hub-and-spoke-with-custom-dns

详细信息:Code=“VMExtensionProvisioningError”

Message=“VM 在处理扩展”vmssCSE“时报告了失败。

错误消息:“启用失败: 无法执行命令: 命令终止,退出状态为 52\n[stdout]\n{

“ExitCode”: “52”,

“Output”: “Fri Oct 15 10:06:00 UTC 2021,aks- nodepool1-36696444-vmss000000\nConnection to mcr.microsoft.com 443 端口 [tcp/https]

原因

群集节点无法解析 Azure DNS 中群集的完全限定域名(FQDN)。 在失败的群集节点上运行以下 DNS 查找命令,查找有效的 DNS 解析。

节点 OS 命令
Linux dig <cluster-fqdn>
Windows nslookup <cluster-fqdn>

解决方案

在 DNS 服务器和防火墙上,确保没有任何阻止对群集 FQDN 的解析。 如果在运行 nslookupdig 命令后阻止某些内容并应用任何必要的修复,则自定义 DNS 服务器可能配置不正确。 有关配置自定义 DNS 服务器的帮助,请查看以下文章:

使用具有自定义 DNS 的专用群集时,将创建 DNS 区域。 DNS 区域必须链接到虚拟网络。 创建群集后将发生这种情况。 创建具有自定义 DNS 的专用群集在创建过程中会失败。 但是,可以通过协调群集将创建过程还原到“成功”状态。 为此,请在 Azure CLI 中运行 az resource update 命令,如下所示:

az resource update --resource-group <resource-group-name> \
    --name <cluster-name> \
    --namespace Microsoft.ContainerService \
    --resource-type ManagedClusters

此外,请验证 DNS 服务器是否已为专用群集正确配置,如前所述。

注意

条件转发不支持子域。

详细信息

联系我们寻求帮助

如果你有任何疑问或需要帮助,请创建支持请求联系 Azure 社区支持。 你还可以将产品反馈提交到 Azure 反馈社区