共用方式為


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

本文討論如何識別並解決 K8SAPIServerDNSLookupFailVMExtensionError 錯誤(也稱為錯誤碼ERR_K8S_API_SERVER_DNS_LOOKUP_FAIL、錯誤號碼 52),當您嘗試啟動或建立及部署Microsoft Azure Kubernetes Service (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 至 mcr.microsoft.com 443 埠 [tcp/https]

原因

叢集節點無法解析 Azure DNS 中叢集的完整功能變數名稱 (FQDN)。 在失敗的叢集節點上執行下列 DNS 查閱命令,以尋找有效的 DNS 解析。

節點OS 指令
Linux dig <cluster-fqdn>
窗戶 nslookup <cluster-fqdn>

解決方案

在您的 DNS 伺服器和防火牆上,確定沒有任何專案會封鎖叢集 FQDN 的解析。 如果您在執行 nslookupdig 命令並套用任何必要的修正程序之後,即使發生封鎖,您的自定義 DNS 伺服器可能設定不正確。 如需設定自定義 DNS 伺服器的協助,請檢閱下列文章:

當您使用具有自定義 DNS 的私人叢集時,會建立 DNS 區域。 DNS 區域必須連結至虛擬網路。 這會在建立叢集之後發生。 建立具有自定義 DNS 的私人叢集會在建立期間失敗。 不過,您可以藉由協調叢集,將建立程式還原到「成功」狀態。 若要這樣做,請在 Azure CLI 中執行 az resource update 命令,如下所示:

接下來,設定您的 AKS 叢集和資源組名,然後執行 update 命令來協調叢集。 環境變數會讓您的資源名稱是唯一的,而且會在使用之前宣告。

az resource update --resource-group $RESOURCE_GROUP_NAME \
    --name $CLUSTER_NAME \
    --namespace Microsoft.ContainerService \
    --resource-type ManagedClusters

結果:

{
  "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.ContainerService/ManagedClusters/myAksClusterxxx",
  "location": "eastus",
  "name": "myAksClusterxxx",
  "properties": {
      // ...other properties...
  },
  "resourceGroup": "myResourceGroupxxx",
  "type": "Microsoft.ContainerService/ManagedClusters"
}

也請確認您的 DNS 伺服器已針對私人叢集正確設定,如先前所述。

注意

有條件的轉接不支援子網域。

其他相關資訊

與我們連絡,以取得說明

如果您有疑問,可以詢問 Azure 社群支援。 您也可以向 Azure 意見反應社群提交產品意見反應。