容器服务平台提供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状态、镜像拉取、网络连通性等。 | |
检查集群常见问题,检查项包括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是否可用。 | 请尝试通过命令 |
集群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。 |