容器服务平台提供Pod诊断功能,帮助您诊断异常的Pod信息。本文介绍Pod诊断的检查项以及对应的修复方案。

容器服务平台构建了基于专家经验的故障诊断系统,并基于海量数据训练了AI智能故障诊断模型。Pod诊断融合了基于专家经验和AI智能诊断两种诊断模式,进一步深入定位问题根因。Pod诊断包括诊断检查项和诊断根因。

  • 诊断检查项:包括Pod检查、ClusterComponent检查。

  • 诊断根因:包括定位到的根因以及修复建议。Pod诊断会收集部分集群信息并识别其中的异常,然后根据识别到的异常进行深入的异常诊断。

重要

使用故障诊断功能时,系统将在您的集群执行数据采集程序并收集检查结果。采集的信息包括系统版本,以及负载、Docker、Kubelet等运行状态及系统日志中关键错误信息。数据采集程序不会采集您的业务信息及敏感数据。

诊断支持的异常场景

Pod诊断覆盖的典型异常场景和AI智能诊断支持场景如下表所示。

类别

支持的异常场景

Pod诊断

Pod未被调度器处理。

Pod不满足调度约束无法被调度。

Pod已调度但未被Kubelet处理。

Pod等待存储卷就绪。

Pod被驱逐。

Pod的Sandbox容器创建失败。

Pod长期处于terminating状态。

Pod中容器发生OOM异常。

Pod中容器异常退出。

Pod中容器处于CrashLoopBackOff状态。

Pod中容器NotReady。

Pod拉取镜像出错。

Pod拉取镜像超时。

AI智能诊断

Pod状态异常。

Pod发生OOM异常。

Pod容器异常退出。

Pod ConfigMap或Secret配置异常。

Pod健康检查失败。

Pod PVC配置异常。

Pod镜像拉取异常。

诊断流程

集群诊断收集部分集群信息并识别其中的异常,然后根据识别到的异常进行深入的异常诊断。诊断融合了基于专家经验和AI智能诊断两种诊断模式,进一步深入定位问题根因。发起诊断后,诊断会按照异常识别、数据采集、检查项评估以及根因分析四个阶段,完成后给出诊断结果。

  • 异常识别:采集基本数据,例如Pod状态、集群Event事件流等,并快速分析当前的异常。

  • 数据采集:根据异常识别结果采集和诊断上下文相关的数据。

  • 检查项评估:根据采集到的数据,判断关键指标是否正常。

  • 根因分析:根据采集的数据和检查项,部分问题可自动分析导致问题的原因。

诊断结果

诊断结果包括根因结果与检查项。根因诊断结果部分包括识别到的异常异常根因修复建议。检查项则按不同的类别对可能引起异常的点进行检查,覆盖根因未包括的部分,并对异常原因进一步补充。

说明

根据集群配置,具体检查项可能稍有不同。实际结果请以诊断页面结果为准。

Pod诊断对应的检查项

诊断项分组

说明

Pod

检查Pod常见问题,检查项包括Pod状态、镜像拉取、网络连通性等。

ClusterComponent

检查集群常见问题,检查项包括API Service可用性、DNS可用性、NAT网关状态等。

Pod

检查项名称

检查项说明

修复方案

Pod容器重启次数统计

统计Pod中容器重启次数。

请检查Pod状态及日志。更多信息,请参见Pod异常问题排查

Pod容器镜像下载阻塞情况

检查Pod同节点是否有其他Pod的容器镜像下载被阻塞。

请检查Pod状态及日志。更多信息,请参见Pod异常问题排查

Pod容器镜像Secrets有效性检查

检查Pod拉取镜像的Secrets是否有效。

请检查Pod状态及日志。更多信息,请参见Pod异常问题排查

GPU Pod的环境变量是否合法

检查NVIDIA_VISIBLE_DEVICES是否位于Pod环境变量中,因为此变量可能与Kubelet冲突。

请检查Pod状态及日志。更多信息,请参见Pod异常问题排查

Pod到CoreDNS Pods的连通性

检查Pod到CoreDNS Pods连通性。

检查Pod到CoreDNS Pods的连通性。

Pod到CoreDNS Service的连通性

检查Pod到CoreDNS Service连通性。

检查Pod到CoreDNS Pods的连通性。

Pod到主机网络DNS服务器的连通性

检查Pod到主机网络DNS服务器的连通性。

检查Pod到主机网络DNS服务器的连通性。

Pod容器进程处于D状态检查

检查Pod的容器进程是否处于D状态。

Pod的部分容器进程处于D状态,通常为容器进程卡在磁盘IO中,请尝试重启宿主机ECS,如仍无法恢复,请提交工单处理。

Pod初始化状态

检查Pod是否正常初始化。

请检查Pod状态及日志。更多信息,请参见Pod异常问题排查

Pod申请的GPU资源

检查Pod是否申请GPU资源,排除因为未申请GPU资源导致的Pod无法使用GPU。

该Pod中没有声明GPU资源,如有需要,请检查Pod配置是否规范。

Pod调度状态

检查Pod是否正常调度。

该Pod中没有声明GPU资源,如有需要,请检查Pod配置是否规范。

ClusterComponent

检查项名称

检查项说明

修复方案

集群免密插件版本检查

检查集群免密插件版本是否过低。

集群免密插件版本检查过低,请尽快升级版本。具体操作,请参见使用免密组件拉取容器镜像

集群APIService可用状态

检查集群APIService是否可用。

请尝试通过命令kubectl get apiservice,检查集群中的APIService的可用状态,并通过kubectl describe apiservice命令,查看状态异常的APIService并分析原因。

集群Pod网段余量紧张

检查Flannel集群剩余可用PodCIDR网段是否少于5个。每个节点消耗一个PodCIDR网段,Pod网段耗尽后,新添加的节点将无法正常工作。

提交工单处理。

DNS 服务后端服务端点

检查集群DNS服务Endpoints数。

请检查CoreDNS Pod运行状态和运行日志。更多信息,请参见DNS解析异常问题排查

DNS 服务 ClusterIP

检查集群DNS服务的Cluster IP是否正常分配,集群DNS服务异常会造成集群功能异常,影响业务。

请检查CoreDNS Pod运行状态和运行日志。更多信息,请参见DNS解析异常问题排查

集群NAT网关状态

检查集群NAT网关状态。

请登录NAT网关管理控制台,检查集群的NAT网关是否因欠费而处于欠费锁定状态。

集群NAT网关并发超规格丢弃速率

检查NAT网关会话并发超规格丢弃速率是否过高。

集群NAT网关会话并发超规格丢弃速率过高,请尝试通过升级NAT网关的规格解决该问题。更多信息,请参见普通型公网NAT网关升级至增强型公网NAT网关FAQ