排查“节点未准备就绪”故障(如果证书已过期)
本文可帮助你排查 Microsoft Azure Kubernetes 服务 (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 群集升级会自动帮助轮换群集证书。 但是,此行为更改不会对过期的群集证书生效。 如果升级仅执行以下操作,则不会续订过期的证书:
- 升级节点映像。
- 将节点池升级到同一版本。
- 将节点池升级到较新版本。
只有完全升级(即控制平面和节点池的升级)有助于续订过期的证书。
详细信息
- 有关常规故障排除步骤,请参阅 节点未就绪故障的基本故障排除。