节点未就绪故障的基本故障排除
本文提供故障后恢复 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 秒。
不能在状态为 或 Unknown
的 NotReady
上Node
计划 Pod
。 只能在处于 状态Ready
的节点上计划 Pod
。
如果节点处于 MemoryPressure
、 DiskPressure
或 PIDPressure
状态,则必须管理资源才能在节点上计划额外的 Pod。 如果节点处于 NetworkUnavailable
模式,则必须在节点上正确配置网络。 请确保满足以下条件:
群集处于 “成功 (正在运行) 状态。 若要检查Azure 门户上的群集状态,请搜索并选择“Kubernetes 服务”,然后选择 AKS 群集的名称。 然后,在群集的“概述”页上,Essentials查找“状态”。 或者,在 Azure CLI 中输入 az aks show 命令。
节点池的 预配状态 为 “已成功” ,电源 状态 为 “正在运行”。 若要检查Azure 门户上的节点池状态,请返回到 AKS 群集的页面,然后选择“节点池”。 或者,在 Azure CLI 中输入 az aks nodepool show 命令。
所需的出口端口在网络安全组中打开, (NSG) 和防火墙,以便可以访问 API 服务器的 IP 地址。 有关详细信息,请参阅 AKS 群集所需的出站网络规则和 FQDN。
节点 已部署最新的节点映像。
节点处于 状态,
Running
而不是Stopped
或Deallocated
。群集运行的是 AKS 支持的 Kubernetes 版本。
第三方联系人免责声明
Microsoft 提供第三方联系信息,帮助你查找有关本主题的其他信息。 该联系信息如有更改,恕不另行通知。 Microsoft 不保证第三方联系信息的准确性。
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈