針對節點未就緒失敗進行疑難解答,如果有過期的憑證
本文可協助您針對Microsoft Azure Kubernetes Service (AKS) 叢集中的節點未就緒案例進行疑難解答,如果有過期的憑證。
必要條件
- Azure CLI
- 用於憑證顯示和簽署的 OpenSSL 命令行工具
徵兆
您發現 AKS 叢集節點處於 [節點未就緒] 狀態。
原因
有一或多個過期的憑證。
預防:執行 OpenSSL 簽署憑證
叫用 openssl-x509 命令來檢查憑證的到期日,如下所示:
針對虛擬機 (VM) 擴展集節點,請使用 az vmss run-command invoke 命令:
az vmss run-command invoke \ --resource-group <resource-group-name> \ --name <vm-scale-set-name> \ --command-id RunShellScript \ --instance-id 0 \ --output tsv \ --query "value[0].message" \ --scripts "openssl x509 -in /etc/kubernetes/certs/apiserver.crt -noout -enddate"
針對 VM 可用性設定組節點,請使用 az vm run-command invoke 命令:
az vm run-command invoke \ --resource-group <resource-group-name> \ --name <vm-availability-set-name> \ --command-id RunShellScript \ --output tsv \ --query "value[0].message" \ --scripts "openssl x509 -in /etc/kubernetes/certs/apiserver.crt -noout -enddate"
叫用這些命令之後,您可能會收到某些錯誤碼。 如需錯誤碼 50、51 和 52 的相關信息,請參閱下列連結,視需要:
- 針對 OutboundConnFailVMExtensionError 錯誤碼 (50) 進行疑難排解
- 針對 K8SAPIServerConnFailVMExtensionError 錯誤碼 (51) 進行疑難排解
- 針對 K8SAPIServerDNSLookupFailVMExtensionError 錯誤碼 (52) 進行疑難排解
如果您收到錯誤碼 99,這表示 apt-get 更新 命令遭到封鎖,無法存取下列一或多個網域:
- security.ubuntu.com
- azure.archive.ubuntu.com
- nvidia.github.io
若要允許存取這些網域,請更新任何封鎖防火牆、網路安全性群組 (NSG) 或網路虛擬設備 (NVA) 的組態。
解決方案:輪替憑證
您可以套用 憑證自動輪替 ,以在節點中輪替憑證到期之前。 此選項不需要停機 AKS 叢集。
如果可以容納叢集停機時間,您可以 改為手動輪替憑證 。
注意
從 2021 年 7 月 15 日開始,AKS 叢集升級會自動協助輪替叢集憑證。 不過,此行為變更不會對過期的叢集憑證生效。 如果升級只採取下列動作,將不會更新過期的憑證:
- 升級節點映像。
- 將節點集區升級為相同版本。
- 將節點集區升級至較新版本。
只有完整升級(也就是控制平面和節點集區的升級)有助於更新過期的憑證。
其他相關資訊
- 如需一般疑難解答步驟,請參閱 節點未就緒失敗的基本疑難解答。