排查“节点未准备就绪”故障(如果证书已过期)

本文可帮助你排查 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 的信息,请参阅以下链接,如有必要:

如果收到错误代码 99,则表示 阻止 apt-get 更新 命令访问以下一个或多个域:

  • security.ubuntu.com
  • azure.archive.ubuntu.com
  • nvidia.github.io

若要允许访问这些域,请更新任何阻止防火墙、网络安全组 (NSG) 或网络虚拟设备 (NVA) 的配置。

解决方案:轮换证书

可以在证书过期之前应用 证书自动轮换 来轮换节点中的证书。 此选项不需要 AKS 群集停机。

如果可以适应群集停机时间,可以 改为手动轮换证书

注意

2021 年 7 月 15 日开始,AKS 群集升级会自动帮助轮换群集证书。 但是,此行为更改不会对过期的群集证书生效。 如果升级仅执行以下操作,则不会续订过期的证书:

  • 升级节点映像。
  • 将节点池升级到同一版本。
  • 将节点池升级到较新版本。

只有完全升级(即控制平面和节点池的升级)有助于续订过期的证书。

详细信息