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

如果证书已过期,本文可帮助你排查 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 update 命令访问以下一个或多个域:

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

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

解决方案:轮换证书

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

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

注意

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

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

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

更多信息