排查 K8SAPIServerDNSLookupFailVMExtensionError 错误代码 (52)

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

先决条件

  • 适用于 Windows 节点 的 nslookup DNS 查找工具或 Linux 节点的 dig 工具。

  • Azure CLI 版本 2.0.59 或更高版本。 如果已安装 Azure CLI,可以通过运行 az --version来查找版本号。

症状

尝试启动或创建 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”:“星期五 Oct 15 10:06:00 UTC 2021,aks- nodepool1-36696444-vmss000000\n连接到 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 反馈社区提交产品反馈。