針對 K8SAPIServerDNSLookupFailVMExtensionError 錯誤碼 (52) 進行疑難解答

本文討論如何識別及解決K8SAPIServerDNSLookupFailVMExtensionError錯誤 (也稱為錯誤碼ERR_K8S_API_SERVER_DNS_LOOKUP_FAIL,也就是當您嘗試啟動或建立或部署 Microsoft Azure Kubernetes Service (AKS) 叢集時所發生的錯誤編號 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”: “Fri 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 的解析。 即使您 nslookup 執行 或 dig 命令並套用任何必要的修正程式,您的自定義 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 community 支援。 您也可以將產品意見反應提交給 Azure 意應見反社群