排查节点未就绪故障(如果证书已过期)
如果证书已过期,本文可帮助你排查 Microsoft Azure Kubernetes 服务 (AKS) 群集中的节点未就绪情况。
先决条件
症状
你发现 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 update 命令访问以下一个或多个域:
- security.ubuntu.com
- azure.archive.ubuntu.com
- nvidia.github.io
若要允许访问这些域,请更新任何阻止防火墙、网络安全组 (NSG) 或网络虚拟设备 (NVA) 的配置。
解决方案:轮换证书
可以应用 证书自动轮换 ,以便在证书过期之前轮换节点中的证书。 此选项不需要 AKS 群集停机。
如果能够适应群集停机时间,可以 改为手动轮换证书 。
注意
从 2021 年 7 月 15 日发布的 AKS 开始,AKS 群集升级会自动帮助轮换群集证书。 但是,此行为更改不会对过期的群集证书生效。 如果升级仅执行以下操作,则不会续订过期的证书:
- 升级节点映像。
- 将节点池升级到同一版本。
- 将节点池升级到最新版本。
只有完全升级 (即,控制平面和节点池) 升级有助于续订过期的证书。
更多信息
- 有关常规故障排除步骤,请参阅 节点未就绪故障的基本故障排除。
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈