首页主机资讯K8S部署在Debian上如何进行故障排查

K8S部署在Debian上如何进行故障排查

时间2025-11-19 22:29:03发布访客分类主机资讯浏览741
导读:K8S在Debian上的故障排查路线图 一 快速定位路径 集群连通性:执行kubectl cluster-info与kubectl get nodes,确认控制面可达与节点状态是否为Ready。若节点NotReady,优先查看节点详情与系...

K8S在Debian上的故障排查路线图

一 快速定位路径

  • 集群连通性:执行kubectl cluster-infokubectl get nodes,确认控制面可达与节点状态是否为Ready。若节点NotReady,优先查看节点详情与系统组件日志。
  • 组件运行状态:在节点上用sudo systemctl status kubeletsudo journalctl -u kubelet -f查看kubelet实时日志;必要时检查kube-proxy等其他组件。
  • 工作负载状态:用kubectl get pods -A定位异常命名空间与Pod,结合kubectl describe pod -n 查看事件与失败原因;资源压力用kubectl top pod/node核查。
  • 事件与系统日志:用kubectl get events -A --sort-by=.metadata.creationTimestamp查看最近事件;节点层问题查看**/var/log/syslogdmesg**。
  • 外部访问验证:对Service类型为NodePort/LoadBalancer的,从集群外部按节点IP与NodePort访问验证;若为ClusterIP,需通过端口转发或Ingress测试。

二 节点与系统层检查

  • 基础环境:确认CPU/内存/磁盘满足最低要求;磁盘满会导致Pod被驱逐(Evicted),及时清理或扩容。
  • 交换分区:Kubernetes不支持启用Swap,执行sudo swapoff -a并在**/etc/fstab**中注释swap条目,防止重启后恢复。
  • 防火墙与端口:如使用ufw,放行控制面与工作节点通信端口,例如6443、2379、2380、10250、10251、10252、10255等;云环境同步放通安全组。
  • 内核与网络参数:加载br_netfilter模块,开启net.ipv4.ip_forward=1与桥接相关转发,确保iptables/nftables规则与容器运行时兼容。
  • 容器运行时:自v1.24起弃用dockershim,生产建议使用containerd;确认运行时与K8s版本匹配并处于健康状态。

三 常见故障与修复要点

  • Pod镜像拉取失败(ErrImagePull/ImagePullBackOff):核对镜像名与标签、仓库可达性与凭据;私有仓库在节点放置CA证书(如/etc/docker/certs.d/…)。必要时手动拉取并打标验证。
  • 节点无法加入集群:检查token是否过期、CA证书哈希是否正确、网络与端口是否可达;在控制面重新生成加入命令后重试。
  • 服务访问异常:排查Service端口映射与类型(外网访问应选NodePort/LoadBalancer而非ClusterIP);证书错误时更新证书或在测试环境临时使用**-k**跳过验证(不推荐生产)。
  • 网络插件问题:部署Flannel/Calico等后若Pod不通或DNS异常,检查网络插件配置、Pod CIDR与节点路由/iptables规则,必要时清理残留并重装。
  • 证书问题:访问API或组件间通信报证书错误时,更新证书或在客户端指定**–cacert**;临时排障可用**-k**(不安全)。
  • 资源不足驱逐:节点磁盘/内存压力导致Evicted,清理无用镜像与日志、扩容节点或调整资源请求/限制。

四 日志与监控手段

  • 组件日志:用journalctl -u kubelet -fsystemctl status kubelet定位节点上组件问题;必要时查看kube-proxy与容器运行时日志。
  • 应用与集群事件:用kubectl logs -n [-c ]查看容器日志;用kubectl describe pod/nodekubectl get events -A获取事件线索。
  • 可视化监控:部署Prometheus + Grafana监控节点与Pod指标(CPU/内存/网络/存储),配置告警规则;或使用Kubernetes Dashboard进行Web可视化观测。
  • 集中式日志:搭建EFK(Elasticsearch + Fluentd + Kibana)Loki + Grafana收集与分析容器与系统日志,便于追溯历史问题。

五 一键排查清单

检查项 关键命令或路径 期望结果/处理
节点与控制面连通 kubectl cluster-info;kubectl get nodes 显示API地址与节点列表;NotReady则查kubelet与网络
组件服务状态 systemctl status kubelet;journalctl -u kubelet -f kubelet active且日志无致命错误
工作负载状态 kubectl get pods -A;kubectl describe pod -n ;kubectl get events -A 定位异常Pod与事件原因
资源压力 kubectl top pod -A;kubectl top node 无持续高占用;磁盘满则清理/扩容
网络连通 ping/curl;ss -lntp 节点间与Pod网络互通;端口监听正确
服务暴露 kubectl get svc;ss -lntp 类型与端口映射正确;外网可访问对应NodePort/LB
防火墙与安全组 ufw status;云安全组规则 放行6443、2379、2380、10250、10251、10252、10255等
内核与模块 lsmod grep br_netfilter;sysctl -p
容器运行时 crictl ps;ctr images ls 容器与镜像可正常管理
日志与监控 tail -f /var/log/syslog;dmesg;Prometheus/Grafana 无系统级异常;监控面板数据正常

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: K8S部署在Debian上如何进行故障排查
本文地址: https://pptw.com/jishu/751656.html
如何通过Linux配置提升Kafka效率 Debian上K8S部署更新策略是什么

游客 回复需填写必要信息