容器智能运维平台提供节点诊断功能,帮助您诊断集群中存在异常的节点。本文介绍节点诊断对应的检查项以及修复方案。
容器智能运维平台构建了基于专家经验的故障诊断系统,并基于海量数据训练了AI智能故障诊断模型。基于专家经验和AI智能诊断两种诊断模式,节点诊断可以深入定位问题根因。节点诊断包括诊断检查项和诊断根因。
诊断检查项:包括Node检查、NodeComponent检查、ClusterComponent检查、ECSControllerManager检查、GPUNode检查。
诊断根因:包括定位到的根因以及修复建议。节点诊断会收集部分集群和节点信息并识别其中的异常,然后根据识别到的异常,进行深入的异常诊断。
使用故障诊断功能时,系统将在您的集群节点上执行数据采集程序并收集检查结果。采集的信息包括系统版本,以及负载、Docker、Kubelet等运行状态及系统日志中关键错误信息。数据采集程序不会采集您的业务信息及敏感数据。
诊断支持的异常场景
节点诊断覆盖的典型异常场景和AI智能诊断支持场景如下表所示。
类别 | 支持的异常场景 |
节点诊断 | 节点NotReady:网络未就绪。 |
节点NotReady:PID数量不足。 | |
节点NotReady:内存不足。 | |
节点NotReady:磁盘空间不足。 | |
节点NotReady:运行时异常。 | |
节点NotReady:无心跳。 | |
节点上磁盘索引节点余量不足。 | |
节点PID数量不足。 | |
节点时间不正确。 | |
节点文件系统只读。 | |
节点内核发生死锁。 | |
AI智能诊断 | 节点状态异常。 |
节点ECS状态异常。 | |
节点Kubelet组件异常。 | |
节点运行时状态异常。 | |
节点磁盘存储空间满。 | |
节点CPU负载过高。 |
诊断流程
集群诊断收集部分集群和节点信息并识别其中的异常,然后根据识别到的异常进行深入的异常诊断。诊断融合了基于专家经验和AI智能诊断两种诊断模式,进一步深入定位问题根因。发起诊断后,诊断会按照异常识别、数据采集、检查项评估以及根因分析四个阶段,完成后给出诊断结果。
异常识别:采集基本数据,例如Node状态、Pod状态、集群Event事件流等,并快速分析当前的异常。
数据采集:根据异常识别结果采集和诊断上下文相关的数据。例如,节点诊断采集节点在K8s中的信息、节点对应的ECS信息、节点内Docker、Kubelet等进程运行状态信息。
检查项评估:根据采集到的数据,判断关键指标是否正常。例如,节点诊断检查项包括Docker进程状态、ECS状态等。不同的诊断类型对应不同的检查项,并将针对检查结果提供对应的检查项列表和每个检查项的含义。
根因分析:根据采集的数据和检查项,部分问题可自动分析导致问题的原因。
诊断结果
诊断结果包括根因结果与检查项。根因诊断结果部分包括识别到的异常、异常根因和修复建议。检查项则按不同的类别对可能引起异常的点进行检查,覆盖根因未包括的部分,并对异常原因进一步补充。
根据集群配置,具体检查项可能稍有不同。实际结果请以诊断页面结果为准。
节点诊断对应的检查项
诊断项分组 | 说明 |
检查节点实例常见问题,检查项包括节点状态、网络状态、内核日志、核心进程和服务可用性等。 | |
检查节点核心组件状态,检查项包括网络和存储插件。 | |
检查集群常见问题,检查项包括APIService可用性、DNS可用性、NAT网关状态等。 | |
检查ECS实例常见问题,检查项包括ECS实例状态、网络链路、操作系统、磁盘IO等。 | |
检查使用GPU设备的节点,检查项包括NVIDIA模块状态、驱动配置等。 |
Node
检查项名称 | 检查项说明 | 修复方案 |
集群API Server连接状态 | 检查节点能否正常连接集群API Server。 | 请检查集群相关配置。更多信息,请参见容器服务ACK集群故障排查。 |
节点AUFS mount hung情况 | 检查节点系统AUFS mount是否出现hung。 | 节点系统出现AUFS mount hung问题,请收集节点日志并提交工单处理。关于收集节点日志操作,请参见一键采集节点的诊断日志。 |
节点内核BufferIOError情况 | 检查节点内核是否出现BufferIOError。 | 节点内核出现BufferIOError情况,请收集节点日志并提交工单处理。关于收集节点日志操作,请参见一键采集节点的诊断日志。 |
节点cgroup泄露检查 | 检查节点是否出现cgroup泄露情况。 | 节点出现cgroup泄露情况,可能导致监控采集出错,甚至导致容器无法启动。请先尝试登录节点,删除相应的cgroup目录。若问题仍未解决,请提交工单处理。 |
节点Chronyd进程状态 | 检查节点Chronyd进程是否异常,该进程异常可能会影响系统时钟同步。 | 节点Chronyd进程异常,可能影响节点系统时间同步。请尝试通过命令 |
节点Containerd镜像拉取状态 | 检查节点Containerd拉取镜像是否正常。 | 请检查节点网络及镜像配置。 |
节点Containerd状态 | 检查节点Containerd状态。 | 节点Containerd状态异常,请收集节点日志并提交工单处理。关于收集节点日志操作,请参见一键采集节点的诊断日志。 |
集群CoreDNS Pod可用性 | 检查节点能否正常访问集群CoreDNS的Pod IP地址。 | 请检查节点能否正常访问CoreDNS的Pod IP地址。具体操作,请参见CoreDNS Pod负载不均。 |
节点镜像状态 | 检查节点是否出现镜像损坏。 | 节点镜像出现损坏。请收集节点日志并提交工单处理。关于收集节点日志操作,请参见一键采集节点的诊断日志。 |
节点镜像overlay2状态 | 检查节点是否出现镜像overlay2文件系统损坏。 | 节点出现镜像overlay2文件系统损坏,请收集节点日志并提交工单处理。关于收集节点日志操作,请参见一键采集节点的诊断日志。 |
节点系统时间 | 检查节点系统时间是否异常。 | 无。 |
节点Docker容器启动状态 | 检查节点Docker容器是否出现启动失败。 | 节点Docker启动状态异常,请收集节点日志并提交工单处理。关于收集节点日志操作,请参见一键采集节点的诊断日志。 |
节点Docker镜像拉取状态 | 检查节点Docker拉取镜像是否正常。 | 请检查节点网络及镜像配置。 |
节点Docker状态 | 检查节点Dockerd状态。 | 节点Docker状态异常,请收集节点日志并提交工单处理。关于收集节点日志操作,请参见一键采集节点的诊断日志。 |
节点Docker启动时间 | 检查节点Dockerd启动时间。 | 无。 |
节点Docker hang情况 | 检查节点是否出现Docker hang的情况。 | 请尝试登录节点,通过命令 |
ECS实例是否存在 | 检查ECS实例是否存在。 | 检查ECS实例状态。更多信息,请参见节点与节点池FAQ。 |
ECS实例状态 | 检查ECS实例状态。 | 检查ECS实例状态,更多信息,请参见节点与节点池FAQ。 |
节点内核Ext4FsError情况 | 检查节点内核是否出现Ext4FsError。 | 节点内核出现Ext4FsError情况,请收集节点日志并提交工单处理。关于收集节点日志操作,请参见一键采集节点的诊断日志。 |
节点文件系统只读状态 | 节点出现文件系统只读,通常是因为磁盘故障,会导致节点无法写入数据,可能造成业务异常。 | 请尝试在节点上使用fsck命令修复文件系统,然后重启节点。 |
节点硬件时间 | 检查节点硬件时钟与系统时间是否一致,时间相差超过2分钟可能引起组件异常。 | 请尝试登录节点,通过命令 |
节点DNS服务 | 检查节点能否正常使用主机DNS服务。 | 请检查主机DNS服务是否正常。更多信息,请参见DNS解析异常问题排查。 |
节点内核Oops情况 | 检查节点内核是否出现Oops。 | 节点内核出现Oops,请收集节点日志并提交工单处理。关于收集节点日志操作,请参见一键采集节点的诊断日志。 |
节点内核版本 | 检查节点内核版本是否过低,内核版本过低可能造成系统异常。 | 请尝试更换节点升级内核。更多信息,请参见节点与节点池FAQ。 |
集群DNS服务可用性 | 检查节点能否正访问集群kube-dns服务的Cluster IP,正常使用集群的DNS服务。 | 请检查CoreDNS Pod运行状态和运行日志。更多信息,请参见DNS解析异常问题排查。 |
节点Kubelet状态 | 检查节点Kubelet状态。 | 请检查节点Kubelet日志。更多信息,请参见容器服务ACK集群故障排查。 |
节点Kubelet启动时间 | 检查节点Kubelet启动时间。 | 无。 |
节点CPU使用率 | 检查节点CPU负载是否过高。 | 无。 |
节点内存使用率 | 检查节点内存负载是否过高。 | 无。 |
节点内存碎片化检查 | 检查节点是否出现内存碎片化。 | 节点出现内存碎片化,请先尝试登录节点,执行命令 |
节点内存交换区开启情况 | 检查节点内存交换区 (Memory Swap) 功能是否开启。 | 当前节点内存交换区 (Memory Swap) 功能不支持开启,请登录节点关闭该功能。 |
节点网络设备驱动加载情况 | 检查节点的网络设备virtio驱动加载情况。 | 节点的网络设备出现virtio驱动加载异常,请收集节点日志并提交工单处理。关于收集节点日志操作,请参见一键采集节点的诊断日志。 |
节点CPU水位过高 | 检查节点过去一周CPU使用率。节点CPU水位过高时如部署较多Pod会导致资源争抢,可能会影响业务的正常运行。 | 为避免业务受到影响,请设置合理的Pod request和limit,避免一个节点上运行的Pod过多。 |
节点内网IP是否存在 | 检查节点内网IP是否存在。 | 节点内网IP不存在,请尝试移除节点后重新导入,移除时需保留ECS。有关移除节点的操作,请参见移除节点。有关导入添加节点操作,请参见添加已有节点。 |
节点内存水位过高 | 检查节点过去一周内存利用率。节点内存水位过高时如部署较多Pod会导致资源争抢,可能产生OOM影响业务的正常运行。 | 为避免业务受到影响,请设置合理的Pod request和limit,避免一个节点上运行的Pod过多。 |
节点状态 | 检查集群节点状态是否Ready。 | 请尝试重启节点。更多信息,请参见节点与节点池FAQ。 |
节点是否不可调度 | 检查节点是否不可调度。 | 节点不可调度,请检查节点调度设置。具体操作,请参见设置节点调度。 |
节点OOM情况 | 检查节点是否出现OOM。 | 节点出现OOM问题,请收集节点日志并提交工单处理。关于收集节点日志操作,请参见一键采集节点的诊断日志。 |
集群运行时检查 | 检查节点运行时和集群运行时是否一致。 | 更多信息,请参见创建集群后,是否可以更改容器运行时?。 |
节点OS版本过低 | 检查是否使用已知缺陷的OS版本,操作系统版本过低,存在稳定性风险,可能导致Docker、Containerd等组件无法正常运行。 | 请及时更新操作系统版本。 |
节点公网访问情况 | 检查节点能否正常访问公网。 | 请检查集群是否开启SNAT公网访问。具体操作,请参见为已有集群开启公网访问能力。 |
节点内核RCUStallError情况 | 检查节点内核是否出现RCUStallError。 | 节点内核出现RCUStallError情况,请收集节点日志并提交工单处理。关于收集节点日志操作,请参见一键采集节点的诊断日志。 |
节点操作系统版本 | 检查节点操作系统版本,系统版本过低可能造成集群功能异常。 | 无。 |
节点runc进程泄露情况 | 检查节点runc进程是否发生泄露,runc进程泄露可能会导致节点间歇性地处于NotReady状态。 | 节点runc进程泄露,请检查并手动关闭泄露的runc进程。 |
节点内核SoftLockupError情况 | 检查节点内核是否出现SoftLockupError。 | 节点内核出现SoftLockupError情况,请收集节点日志并提交工单处理。关于收集节点日志操作,请参见一键采集节点的诊断日志。 |
节点Systemd hung情况 | 检查节点是否出现Systemd hung情况。 | 节点出现Systemd hung异常,请尝试登录节点,通过命令 |
节点Systemd版本过低 | 检查是否使用已知缺陷的Systemd版本。Systemd版本过低存在稳定性风险,可能导致docker/containerd等组件无法正常运行。 | 请及时更新Systemd版本。更多信息,请参见Systemd。 |
节点进程Hung情况 | 检查节点进程是否出现Hung。 | 节点出现进程Hung问题,请收集节点日志并提交工单处理。关于收集节点日志操作,请参见一键采集节点的诊断日志。 |
存在unregister_netdevice | 检查内核是否出现unregister_netdevice。 | 节点存在unregister_netdevice问题,请收集节点日志并提交工单处理。关于收集节点日志操作,请参见一键采集节点的诊断日志。 |
NodeComponent
检查项名称 | 检查项说明 | 修复方案 |
节点CNI组件状态 | 检查节点CNI组件是否正常。 | 请检查集群网络组件状态。具体操作,请参见网络管理FAQ。 |
节点CSI组件状态 | 检查节点CSI组件是否正常。 | 请检查集群件存储组件状态。具体操作,请参见存储FAQ-CSI。 |
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。 |
ECSControllerManager
检查项名称 | 检查项说明 | 修复方案 |
ECS实例的组件欠费情况 | 检查ECS实例的云盘或网络带宽是否因账号欠费而无法正常使用。 | ECS实例的云盘或网络带宽因账号欠费而无法正常使用,您需要充值进行恢复。更多信息,请参见续费概述。 |
ECS实例欠费情况 | 检查按量计费的ECS实例是否因为欠费导致停服。 | ECS实例服务欠费,您需要充值后重新开机才能恢复实例。更多信息,请参见续费概述。 |
ECS实例网卡链路层状态 | 检查ECS实例网卡链路层是否出现异常。 | ECS实例未正常启动或网络配置有问题,您可以尝试通过重启实例进行恢复。 |
ECS实例启动状态 | 检查ECS实例的boot操作是否能正常执行加载。 | ECS实例无法正常启动,您需要创建一个新的实例。 |
ECS实例管控系统状态 | 检查ECS实例的后台管控系统是否正常工作。 | 后台管控系统未正常工作,可能会导致实例运行异常,您可以尝试通过重启实例进行恢复。 |
ECS实例CPU状态 | 检查ECS实例底层是否存在CPU争抢或CPU绑定失败。 | ECS实例存在CPU争抢,可能导致实例无法获得CPU或出现其他异常,您可以尝试通过重启实例进行恢复。 |
ECS实例CPU是否存在Split Lock问题 | 检查ECS实例CPU是否存在Split Lock问题。 | ECS实例CPU出现Split Lock。更多信息,请参见Split lock检测与处理。 |
ECS实例DDos攻击的防护状态 | 检查该实例的IP地址是否受到了DDoS攻击。 | ECS实例的IP遭受DDoS攻击,您可以视情况购买其他DDoS防护产品抵御DDoS攻击。更多信息,请参见阿里云DDoS防护方案对比。 |
ECS实例云盘读写受限情况 | 检查实例云盘读写是否受限。 | ECS实例云盘读写IOPS超过上限读写受限,请您降低磁盘的读写频率或升级为更高性能的云盘类型,有关云盘的读写性能指标,请参见块存储性能。 |
ECS实例磁盘加载情况 | 检查ECS实例在启动时云盘是否能正常挂载。 | 云盘挂载失败,导致实例无法正常启动,请停止实例后再次启动实例。 |
ECS实例是否已到期 | 检查以包年包月方式购买的ECS实例是否已到期。 | ECS实例服务到期,您需要续费来恢复服务。更多信息,请参见续费概述。 |
ECS实例操作系统Crash情况 | 检查ECS实例内操作系统是否出现Crash。 | ECS实例的操作系统在过去48小时内出现了Crash情况,建议通过排查系统日志分析原因。具体操作,请参见查看实例的系统日志和屏幕截图。 |
ECS实例所在宿主机状态 | 检查ECS实例所在的底层物理机是否有故障。 | ECS实例底层物理机存在故障,可能会影响实例的运行状态或性能,您可以尝试通过重启实例进行恢复。 |
ECS实例镜像加载状态 | 检查ECS实例在启动时所使用的镜像是否能正常加载。 | 镜像可能因为系统原因、镜像问题等加载失败,您可以尝试通过重启实例进行恢复。 |
ECS实例磁盘IO hang情况 | 检查ECS实例的系统盘是否存在IO hang的情况。 | ECS实例云盘出现IO hang,请查看云盘的性能指标。具体操作,请参见查看云盘监控信息。如果您使用的是Alibaba Cloud Linux 2操作系统,检测IO hang的操作,请参见检测文件系统和块层的IO hang。 |
ECS实例网络带宽是否到达上限 | 检查ECS实例网络带宽是否到达上限。 | ECS实例带宽总量已超过实例规格对应的网络基础带宽上限,请您将实例升级至网络带宽能力更高的实例规格。具体操作,请参见升降配方式概述。 |
ECS实例的突发网络带宽是否受限 | 检查ECS实例的网络突发带宽是否受到限制。 | ECS实例突发网络带宽已超过实例规格对应的网络突发带宽上限,请您将实例升级至网络带宽能力更高的实例规格。具体操作,请参见升降配方式概述。 |
ECS实例网卡加载状态 | 检查ECS实例的网卡是否能正常加载。 | 如果网卡无法正常加载,将影响实例的网络连通性,您可以尝试通过重启实例进行恢复。 |
ECS实例网卡会话建立检查 | 检查ECS实例的网卡是否能正常建立会话。 | 如果网卡无法建立会话或已建立的会话超过限制,将影响实例的网络连通性或网络吞吐,您可以尝试通过重启实例进行恢复。 |
ECS实例核心操作执行情况 | 检查您对ECS实例最近执行的管理操作,例如,开机、关机、升配等是否执行成功。 | 您最近发起的管理操作,例如开机、关机、升配执行失败,您需要重新发起该操作。 |
ECS实例网卡丢包检查 | 检查ECS实例的网卡入方向或出方向是否存在丢包现象。 | ECS实例发现网卡丢包现象,您可以尝试通过重启实例进行恢复。 |
ECS实例性能是否短暂受损 | 检查实例是否存在因底层软硬件问题导致的性能受损。 | 如果存在性能受损,会提示发生时间,请您检查ECS实例的历史系统事件或者系统日志进行确认。具体操作,请参见查看历史系统事件。 |
ECS实例性能是否受限 | 检查ECS实例性能是否受限。 | ECS实例的CPU积分不足以支付维持高性能所需的积分,只能使用基准性能。 |
ECS实例磁盘扩缩容情况 | 检查ECS实例的系统盘扩缩容情况。 | ECS实例磁盘扩缩容后,操作系统调整文件系统的大小失败。新扩缩容的磁盘无法使用,请重新发起扩缩容操作。 |
ECS实例资源申请 | 检查ECS实例所需要的CPU、内存等物理资源是否充足。 | 物理资源不足导致实例无法启动,您可以等待几分钟后重新尝试开机,或者在其他地域或可用区尝试重新创建实例。 |
ECS实例操作系统状态 | 检查ECS实例的操作系统是否存在内核Panic、OOM异常或内部宕机等故障。 | 此类故障可能是由于ECS实例配置不当或用户空间的程序配置不当导致的,您可以尝试通过重启实例进行恢复。 |
ECS实例虚拟化状态 | 检查ECS实例底层虚拟化层核心服务是否出现异常。 | 出现此类异常可能会导致ECS实例崩溃或出现异常暂停,您可以尝试通过重启实例进行恢复。 |
GPUNode
检查项名称 | 检查项说明 | 修复方案 |
容器运行时 | 检查GPU节点上的容器运行时是否合法。 | 请检查节点上的容器运行时(Docker或Containerd)状态,ACK不支持除这两种容器运行时之外的GPU节点。 |
NVIDIA-Container-Runtime版本 | 检查GPU节点上的NVIDIA-Container-Runtime版本。 | 该节点上的NVIDIA-Container-Runtime版本存在问题或没有安装。请根据以下步骤操作。
|
CGPU模块状态 | 检查GPU节点上的CGPU状态是否正常。 | 请检查该节点是否为共享GPU节点。请根据以下步骤操作。
|
容器运行时配置是否正常 | 检查GPU节点上的容器运行时配置是否正常。 | 该GPU节点上的容器运行时配置存在问题。请检查运行时配置信息,确认以下文件中是否有nvidia-container-runtime配置字段。
|
NVIDIA-Container-Runtime是否正常 | 检查GPU节点上的NVIDIA-Container-Runtime是否正常。 | 该节点上的NVIDIA-Container-Runtime存在问题。请收集GPU节点诊断信息并提交工单处理。收集诊断信息的具体操作,请参见收集GPU节点的问题诊断信息。 |
NVIDIA模块是否正常 | 检查GPU节点上的NVIDIA模块是否正常。 | 该GPU节点上NVIDIA内核模块存在问题。请根据以下步骤操作。
|