排查节点未就绪故障,后跟恢复

本文提供了一个指南,用于排查和解决 Azure Kubernetes 服务 (AKS) 群集中的节点未就绪“问题。 当节点进入“NotReady”状态时,它可能会中断应用程序的功能,并导致它停止响应。 通常,节点会在短时间内自动恢复。 但是,为了防止反复出现问题并保持稳定的环境,必须了解能够实施有效解决的根本原因。

原因

有几个方案可能导致出现“NotReady”状态:

  • API 服务器的不可用。 这会导致就绪情况探测失败。 这可以防止 Pod 附加到服务,以便不再将流量转发到 Pod 实例。

  • 虚拟机(VM)主机故障。 若要确定是否发生 VM 主机错误,请检查以下信息源:

解决方案

若要解决此问题,请按照下列步骤操作:

  1. 运行 kubectl describe node <node-name> 以查看有关节点状态的详细信息。 查找可能指示问题的根本原因的任何错误消息或警告。
  2. 通过运行以下命令 kubectl get apiservices 检查 API 服务器的可用性。 确保在部署 YAML 文件中正确配置就绪情况探测。
  3. 验证节点的网络配置以确保没有连接问题。
  4. 检查节点的资源使用情况,例如 CPU、内存和磁盘,以确定潜在的约束。 有关详细信息,请参阅 使用容器见解监视 Kubernetes 群集性能

有关进一步步骤,请参阅 节点未就绪故障的基本故障排除。

防护

若要防止将来出现此问题,请执行下列作之一或多项:

  • 确保服务层级已完全付费。
  • 减少对 API 服务器的次数 watchget 请求数。