节点未就绪故障的基本故障排除

本文提供故障后恢复 Microsoft Azure Kubernetes 服务 (AKS) 群集节点的故障排除步骤。 本文专门介绍在节点未就绪故障发生时生成的最常见错误消息,并说明如何为 Windows 和 Linux 节点执行节点修复功能。

开始之前

阅读 有关排查 Kubernetes 群集问题的官方指南。 此外,请阅读 Microsoft 工程师的 Kubernetes 故障排除指南。 本指南包含用于对 Pod、节点、群集和其他功能进行故障排除的命令。

先决条件

  • Azure CLI 版本 2.31 或更高版本。 如果已安装 Azure CLI,可以通过运行 az --version来查找版本号。

基本故障排除

AKS 持续监视工作器节点的运行状况状态,并在节点变得不正常时自动修复节点。 Azure 虚拟机 (VM) 平台维护遇到问题的 VM 。 AKS 和 Azure VM 协同工作,以减少群集的服务中断。

对于节点,有两种检测信号形式:

  • 汇报对象的 .status 文件Node

  • kube-node-lease 命名空间中的 Lease 对象。 每个都有 Node 一个关联的 Lease 对象。

与更新的 .status 文件 Node相比, 是 Lease 一种轻型资源。 将 Lease 对象用于检测信号可降低这些更新对大型群集的性能影响。

kubelet 负责创建和更新对象的 .status 文件Node。 它还负责更新 Lease 与对象相关的 Node 对象。

如果满足以下条件之一,Node则 kubelet 将更新 .status 文件:

  • 状态发生更改。

  • 在配置的时间间隔之后,不会发生更新。

状态更新 Node 的默认间隔为五分钟。 此间隔比无法访问节点的 40 秒默认超时长得多。 kubelet 创建对象,然后每隔十秒更新一次, Lease (默认更新间隔) 。 Lease汇报独立于状态更新Node发生。 Lease如果更新失败,则 kubelet 会重试,使用指数退避,该退避从 200 毫秒开始,上限最大为 7 秒。

不能在状态为 或 UnknownNotReadyNode计划 Pod 。 只能在处于 状态Ready的节点上计划 Pod

如果节点处于 MemoryPressureDiskPressurePIDPressure 状态,则必须管理资源才能在节点上计划额外的 Pod。 如果节点处于 NetworkUnavailable 模式,则必须在节点上正确配置网络。 请确保满足以下条件:

  • 群集处于 “成功 (正在运行) 状态。 若要检查Azure 门户上的群集状态,请搜索并选择“Kubernetes 服务”,然后选择 AKS 群集的名称。 然后,在群集的“概述”页上,Essentials查找“状态”。 或者,在 Azure CLI 中输入 az aks show 命令。

    Azure 门户Azure Kubernetes 服务 (A K S) 群集概述页的屏幕截图。在“Essentials”部分中,“状态”为“成功 (正在运行) ”。

  • 节点池的 预配状态“已成功” ,电源 状态“正在运行”。 若要检查Azure 门户上的节点池状态,请返回到 AKS 群集的页面,然后选择“节点池”。 或者,在 Azure CLI 中输入 az aks nodepool show 命令。

    Azure 门户Azure Kubernetes 服务 (A K S) 群集节点池的屏幕截图。预配状态为“成功”。电源状态为“正在运行”。

  • 所需的出口端口在网络安全组中打开, (NSG) 和防火墙,以便可以访问 API 服务器的 IP 地址。 有关详细信息,请参阅 AKS 群集所需的出站网络规则和 FQDN

  • 节点 已部署最新的节点映像

  • 节点处于 状态, Running 而不是 StoppedDeallocated

  • 群集运行的是 AKS 支持的 Kubernetes 版本

第三方联系人免责声明

Microsoft 提供第三方联系信息,帮助你查找有关本主题的其他信息。 该联系信息如有更改,恕不另行通知。 Microsoft 不保证第三方联系信息的准确性。