故障诊断
更新时间 2025-07-03 21:54:34
最近更新时间: 2025-07-03 21:54:34
本节介绍故障诊断。
概述
分布式容器云平台提供一键故障诊断能力,包括Service诊断、节点诊断、Pod诊断、Ingress诊断,辅助定位集群中出现的异常问题。
诊断维度 | 说明 |
---|---|
Service | 诊断Service相关问题,例如Service后端就绪Pod、异常事件信息等。 |
节点 | 诊断节点相关问题,例如K8s节点NotReady等。 |
Pod | 诊断K8s Pod状态异常相关的问题,例如Pod启动失败、Pod频繁重启等。 |
Ingress | 诊断Ingress相关流量配置问题。 |
前提条件
操作步骤
配置故障诊断
注意
使用故障诊断功能时,系统将在您的集群节点上执行数据采集程序并收集检查结果。采集的信息包括系统版本、负载、Docker、kubelet等运行状态以及系统日志中的关键错误信息。数据采集程序不会采集您的业务信息及敏感数据。
配置Service、节点、Pod、Ingress等诊断操作类似。下文以配置节点诊断为例,介绍如何配置故障诊断功能。
登陆分布式容器云平台,在左侧导航栏中选择集群资源 > 集群管理,进入注册集群列表页。
在注册集群列表中点击需要配置故障诊断的集群,进入单集群管理页面。
在单集群管理页面导航栏中选择运维管理 > 故障诊断,进入故障诊断页面。
在故障诊断页面,点击节点诊断页面,在选择节点面板,选择需要诊断的节点名称,点击确定按钮发起诊断。
在诊断列表页面可查看诊断进展。诊断完成后,诊断页面将显示诊断结果。
查看诊断结果
在故障诊断页面诊断列表的操作列,点击目标诊断报告对应的诊断详情,在诊断详情页面查看详细诊断结果,诊断项状态为异常时,需要确认,如果是引起集群异常的问题需要处理。
注意
根据集群配置,具体检查项可能稍有不同。实际结果请以诊断页面结果为准。
支持的诊断项
诊断维度 | 诊断项 | 说明 | 修复方案 |
---|---|---|---|
Service | 检查Service后端Ready Pod数量 | 检查Service后端Ready Pod数量。 | 检查业务Pod状态,保证Pod存在且处于Ready状态。 |
检查Service是否存在异常事件 | 检查集群中是否存在与该Service相关的异常事件。 | 请检查并处理Service异常事件中的描述信息,若无法处理,请提交工单。 | |
节点 | 检查节点是否存在 | 检查集群中是否存在该节点。 | 请检查Node在集群中是否存在。 |
检查节点状态是否Ready | 检查节点在集群中的状态是否为Ready。 | 请登录到节点上执行systemctl status kubelet或journalctl -exu kubelet查看节点上kubelet进程异常日志并尝试修复。 | |
检查节点状态是否不可调度 | 检查节点是否不可调度,不可调度的节点会影响Pod的正常运行。 | 节点不可调度,请检查节点调度设置。 | |
检查节点CPU装载率是否过高 | 检查节点CPU资源分配率是否过高。 | 请检查节点上pod的CPU request值设置的合理性。 | |
检查节点内存装载率是否过高 | 检查节点内存资源分配率是否过高。 | 请检查节点上pod的Memory request值设置的合理性。 | |
检查节点磁盘压力 | 检查节点磁盘使用率是否过高。 | 请检查节点磁盘使用情况,及时清理磁盘中不需要的文件或扩容磁盘。 | |
检查节点PID压力 | 检查节点PID使用率是否过高。 | 请检查节点PID使用情况。 | |
检查节点Chronyd进程状态是否正常 | 检查节点Chronyd进程是否异常,该进程异常可能会影响系统时钟同步。 | 节点Chronyd进程异常,可能影响节点系统时间同步。请尝试通过命令systemctl restart chronyd重启节点Chronyd进程。 | |
检查节点Ntpd进程状态是否正常 | 检查节点Ntpd进程是否异常,该进程异常时可能会影响系统时钟同步。 | 节点Ntpd进程异常,可能影响节点系统时间同步。请尝试通过命令systemctl restart ntpd重启节点Ntpd进程。 | |
检查节点Containerd状态是否正常 | 检查节点Containerd服务的状态,该进程异常时可能会影响Pod的正常运行。 | 节点Containerd状态异常,请收集节点日志并提交工单处理。 | |
检查节点Containerd镜像拉取是否正常 | 检查节点Containerd进程拉取pause镜像是否正常。 | 请检查节点网络及镜像配置。 | |
检查节点Docker状态是否正常 | 检查节点Dockerd服务的状态,该进程异常时可能会影响Pod的正常运行。 | 节点Docker状态异常,请收集节点日志并提交工单处理。 | |
检查节点Docker镜像拉取是否正常 | 检查节点Docker进程拉取pause镜像是否正常。 | 请检查节点网络及镜像配置。 | |
检查节点Kubelet状态是否正常 | 检查节点Kubelet服务的状态,该进程可能会影响Pod的正常运行。 | 请检查节点kubelet日志。 | |
检查节点Kubelet启动时间 | 检查节点Kubelet进程启动时间。 | 无 | |
节点OS版本 | 检查节点操作系统版本。 | 无 | |
节点内核版本 | 检查节点内核版本是否过低,内核版本过低可能造成系统异常。 | 请尝试更换节点升级内核。 | |
节点Systemd版本 | 检查节点systemd版本。 | 无 | |
节点runc版本 | 检查节点runc版本,runc版本过低可能造成系统异常。 | 无 | |
节点系统时间 | 检查节点系统时间。 | 无 | |
节点硬件时间 | 检查节点硬件时间。 | 无 | |
节点硬件时间漂移 | 检查节点硬件时钟与系统时间是否一致,时间相差超过2分钟可能引起组件异常。 | 请尝试登录节点,通过命令hwclock --systohc将节点系统时间同步到硬件时间。 | |
检查节点内存交换区开启情况 | 检查节点内存交换区 (Memory Swap) 功能是否开启,K8s默认要求关闭内存交换区。 | 当前节点内存交换区 (Memory Swap) 功能不支持开启,请登录节点关闭该功能。 | |
检查Conntrack表使用情况 | 检查节点Conntrack表是否满,Conntrack表满可能影响网络性能。 | 请检查nf_conntrack_buckets和nf_conntrack_max内核参数。 | |
检查节点访问集群API Server是否正常 | 检查节点能否正常连接集群API Server,访问集群中其他K8s资源。 | 请检查集群相关配置。请检查集群相关配置。检查Master组件Pod是否异常。API Server使用的负载均衡ELB是否异常。 | |
节点DNS服务地址 | 检查节点能否正常使用主机DNS服务,通过主机DNS服务解析集群外域名。 | 请检查主机DNS服务是否正常。更多信息,请参见DNS解析异常问题排查。 | |
检查节点内网IP是否存在 | 检查节点内网IP是否存在。 | 节点内网IP不存在,请尝试移除节点后重新导入。 | |
检查节点能否访问公网 | 检查节点能否正常访问公网,无法访问公网可能影响公网镜像拉取。 | 请检查集群是否开启SNAT公网访问。 | |
节点CPU使用率 | 检查节点CPU负载是否过高,CPU负载过高可能影响系统性能。 | 无 | |
节点内存使用率 | 检查节点内存负载是否过高,内存过高可能影响系统性能。 | 无 | |
Pod | 检查Pod是否存在 | 检查集群中是否存在该Pod。 | 请检查Pod在集群中对应命名空间下是否存在。 |
检查Pod状态是否为Running | 检查Pod是否处于Running状态。 | 请检查Pod状态及日志。更多信息,请参见Pod异常问题排查。 | |
Pod容器重启次数统计 | 统计Pod中容器重启次数。 | 请检查Pod状态及日志。更多信息,请参见Pod异常问题排查。 | |
检查Pod容器是否存在镜像下载阻塞情况 | 检查Pod容器对应的镜像下载被阻塞。 | 请检查Pod状态及日志。更多信息,请参见Pod异常问题排查。 | |
检查Pod容器镜像Secrets是否有效 | 检查Pod拉取镜像的Secrets是否有效。 | 请检查Pod状态及日志。更多信息,请参见Pod异常问题排查。 | |
检查Pod到主机网络DNS服务器的连通性 | 检查Pod到主机网络DNS服务器的连通性。 | 请检查Pod到主机网络DNS服务器的连通性。 | |
检查Pod容器进程处于D状态检查 | 检查Pod内的容器进程是否处于D状态。 | Pod的部分容器进程处于D状态,通常为容器进程卡在磁盘IO中,请尝试重启宿主机ECS,如仍无法恢复,请提交工单处理。 | |
检查Pod是否初始化成功 | 检查Pod是否正常初始化。 | 请检查Pod状态及日志。更多信息,请参见Pod异常问题排查。 | |
检查Pod是否处于调度中状态 | 检查Pod是否正常调度。 | 请检查Pod状态及日志。更多信息,请参见Pod异常问题排查。 | |
检查Pod是否配置了livenessProbe探针 | 检查Pod描述文件是否配置了livenessProbe探针。 | 请为Pod配置合适的livenessProbe健康检查。 | |
检查Pod是否配置了ReadinessProbe探针 | 检查Pod描述文件是否配置了ReadinessProbe探针。 | 请为Pod配置合适的readinessProbe健康检查。 | |
检查Pod是否配置了资源requests | 检查Pod描述文件是否配置了资源requests。 | 请为Pod配置合适的request资源申请。 | |
检查Pod是否配置了资源limits | 检查Pod描述文件否配置了资源limits。 | 请为Pod配置合适的limit资源限制。 | |
检查Pod在过去24小时内是否存在OOM Kill情况 | 检查Pod在过去24小时内是否存在因内存过载而被Kill的情况。 | 请检查Pod是否配置了合适的limit资源限制,同时检查Pod状态及日志。更多信息,请参见Pod异常问题排查。 | |
Ingress | 检查Ingress是否存在 | 检查与转发规则匹配的Ingress是否存在。 | 检查所提供的URL信息是否有能够对应的Ingress规则。若URL信息无误,可能是Ingress规则存在问题。 |
检查Ingress名称规范 | 检查所匹配到的Ingress名称是否规范。 | 无 | |
检查是否使用了nginx.ingress.kubernetes.io/session-cookie-hash废弃注解 | 检查是否使用了在0.24.0版本废弃的nginx.ingress.kubernetes.io/session-cookie-hash注解key。 | 确认当前Ingress Controller版本,移除该注解或使用其他注解代替。 | |
检查是否使用了nginx.ingress.kubernetes.io/base-url-scheme废弃注解 | 检查是否使用了在0.22.0版本废弃的nginx.ingress.kubernetes.io/base-url-scheme注解key。 | 确认当前Ingress Controller版本,移除该注解或使用其他注解代替。 | |
检查是否使用了nginx.ingress.kubernetes.io/secure-backends废弃注解 | 检查是否使用了在0.21.0版本废弃的nginx.ingress.kubernetes.io/secure-backends注解key。 | 确认当前Ingress Controller版本,移除该注解或使用其他注解代替。 | |
检查是否使用了nginx.com/nginx.org注解 | 检查是否使用了不兼容社区版Nginx Ingress Controller的商业版Ingress注解key(以nginx.com/nginx.org开头)。 | 请使用对应功能的正确用法。关于Ingress更多信息,请参见社区官方文档Nginx Ingress Controller。(引用到官方文档) | |
检查是否使用了nginx.ingress.kubernetes.io/grpc-backend废弃注解 | 检查是否使用了在0.21.0版本废弃的nginx.ingress.kubernetes.io/grpc-backend注解key。 | 确认当前Ingress Controller版本,移除该注解或使用其他注解代替。 | |
检查是否使用了nginx.ingress.kubernetes.io/mirror-uri废弃注解 | 检查是否使用了在0.24.0版本废弃的nginx.ingress.kubernetes.io/mirror-uri注解key。 | 确认当前Ingress Controller版本,移除该注解或使用其他注解代替。 | |
检查是否启用了canary | 使用了nginx.ingress.kubernetes.io/canary相关注解,但value值为"false‘,如果需要使用灰度功能,请指定nginx.ingress.kubernetes.io/canary: "true"。 | 如果您需要在该Ingress上开启Canary功能,请在Ingress规则上添加nginx.ingress.kubernetes.io/canary: "true"注解。 | |
检查Ingress是否存在异常事件 | 检查集群中是否存在与该Ingress相关的异常事件。 | 检查并处理异常事件描述信息中的报错,如无法解决,请提交工单处理。 |