首页主机资讯Ubuntu K8S故障排查指南

Ubuntu K8S故障排查指南

时间2025-10-14 18:53:03发布访客分类主机资讯浏览225
导读:Ubuntu环境下Kubernetes(K8s)故障排查指南 一、基础状态检查(首要步骤) 1. 集群节点状态 使用kubectl get nodes查看节点是否处于Ready状态(若为NotReady,需进一步排查)。通过kubectl...

Ubuntu环境下Kubernetes(K8s)故障排查指南

一、基础状态检查(首要步骤)

1. 集群节点状态

使用kubectl get nodes查看节点是否处于Ready状态(若为NotReady,需进一步排查)。通过kubectl describe node < 节点名> 获取节点详细信息,重点关注Conditions字段(如DiskPressure磁盘压力、MemoryPressure内存压力、PIDPressure进程压力等)。

2. 系统组件状态

检查Kubernetes核心组件(kube-apiserver、etcd、kube-controller-manager等)的Pod状态:kubectl get pods -n kube-system。若组件Pod处于CrashLoopBackOffPendingError状态,需通过kubectl logs < Pod名> -n kube-system查看其日志。

3. 组件版本兼容性

确保kubeadmkubeletkubectl版本一致(建议使用同一小版本,如1.27.x):kubeadm version & & kubelet --version & & kubectl version。版本不兼容可能导致集群初始化或升级失败。

二、节点级故障排查(聚焦单节点问题)

1. kubelet服务状态

kubelet是节点与集群通信的核心组件,需确保其运行正常:

  • systemctl status kubelet:检查服务是否启动(若未启动,执行systemctl start kubelet);
  • journalctl -u kubelet -f:实时查看kubelet日志,重点关注证书过期(如kubelet-client-current.pem)、容器运行时异常(如containerd连接失败)、节点资源不足(如磁盘空间耗尽)等问题。

2. 容器运行时检查

K8s默认使用containerd作为容器运行时,需确认其状态:

  • systemctl status containerd:检查服务是否运行;
  • ctr containers list:查看容器列表(确认容器是否正常启动);
  • ctr images list:查看镜像列表(确认镜像是否拉取成功)。

3. 资源使用情况

节点资源不足(磁盘、内存、CPU)会导致Pod无法调度或节点NotReady

  • df -h /var/lib/kubelet:检查kubelet数据目录磁盘空间(建议保留至少10%空闲);
  • free -m:查看内存使用(若内存不足,K8s会触发OOMKiller终止Pod);
  • top:监控系统进程资源占用(重点关注kubeletcontainerd进程)。

三、网络故障排查(常见通信问题)

1. 基础网络连通性

  • ping < 目标IP> :测试节点间网络连通性(如Master到Node、Node到Pod CIDR);
  • nc -zv < API-Server-IP> 6443:检查API Server端口(默认6443)是否开放(若无法连接,可能是防火墙或网络插件问题)。

2. CNI插件状态

CNI插件(如Calico、Flannel)负责Pod网络,需确认其运行正常:

  • kubectl get pods -n kube-system -l k8s-app=calico-node:查看CNI插件Pod状态(应为Running);
  • kubectl logs < cni-pod-name> -n kube-system:查看插件日志(若日志中出现failed to establish network等错误,需重新配置CNI或修复网络插件)。

3. DNS配置

Pod无法解析Service名称通常是DNS问题:

  • cat /etc/resolv.conf:确认Pod内的DNS配置(默认指向集群DNS服务,如CoreDNS);
  • kubectl get pods -n kube-system -l k8s-app=kube-dns:检查CoreDNS Pod状态(若CoreDNS异常,需修复其配置或镜像拉取问题)。

四、Pod与容器故障排查(最常见的问题场景)

1. Pod状态检查

  • kubectl get pods -A:查看所有命名空间的Pod状态(重点关注PendingCrashLoopBackOffError状态的Pod);
  • kubectl describe pod < Pod名> -n < 命名空间> :获取Pod事件(如镜像拉取失败、资源不足、调度失败)和状态详情(如容器退出码)。

2. 容器日志分析

  • kubectl logs < Pod名> -c < 容器名> -n < 命名空间> :查看容器日志(若Pod有多个容器,需指定-c参数);
  • kubectl logs -f < Pod名> -c < 容器名> :实时查看日志(用于排查运行时错误,如应用崩溃、数据库连接失败)。

3. 常见Pod问题处理

  • 镜像拉取失败:检查镜像名称、标签是否正确(如nginx:latest是否存在),或配置私有仓库凭证(imagePullSecrets);
  • CrashLoopBackOff:通过kubectl logs查看容器崩溃原因(如应用代码错误、配置文件缺失),修复后重启Pod;
  • Pending状态:通过kubectl describe pod查看原因(如资源不足、节点选择器不匹配),调整Pod资源请求或扩容节点。

五、存储故障排查(持久化问题)

1. PVC与PV状态

  • kubectl get pvc -A:查看持久化卷声明(PVC)状态(若为Pending,说明未绑定PV);
  • kubectl get pv:查看持久化卷(PV)状态(若为Available,说明未被PVC绑定);
  • kubectl describe pvc < PVC名> -n < 命名空间> :查看PVC绑定详情(如存储类storageClassName是否正确)。

2. 存储卷挂载检查

  • kubectl describe pod < Pod名> -n < 命名空间> :查看Volumes部分(确认卷是否挂载成功,如MountPath是否正确);
  • kubectl exec -it < Pod名> -n < 命名空间> -- df -h:进入Pod查看存储卷挂载情况(若挂载失败,可能是存储类配置错误或后端存储故障)。

六、证书与安全问题(影响集群通信)

1. 证书有效期检查

  • openssl x509 -in /var/lib/kubelet/pki/kubelet-client-current.pem -noout -dates:检查kubelet客户端证书有效期(若过期,需通过kubeadm certs renew kubelet-client-current.pem续订);
  • openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -dates:检查API Server证书有效期(若过期,需重新初始化集群或续订证书)。

2. Token过期问题

若Node无法加入集群,可能是kubeadm join使用的Token过期:

  • kubeadm token list:查看Token列表(若无输出或Token已过期,需生成新Token:kubeadm token create);
  • 计算新的discovery-token-ca-cert-hashopenssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2> /dev/null | openssl dgst -sha256 -hex | sed 's/^.* //',替换kubeadm join命令中的Token和Hash。

七、高级排查工具(复杂问题辅助)

1. kubectl debug

通过kubectl debug创建诊断容器,进入节点或Pod执行诊断命令(如pingtraceroutenslookup):

  • kubectl debug node/< 节点名> -it --image=nicolaka/netshoot --target=< 容器名> :进入节点诊断(nicolaka/netshoot包含常用网络工具);
  • kubectl debug -it < Pod名> --image=busybox --target=< 容器名> :进入Pod诊断(适用于容器内进程问题)。

2. 集中监控与告警

部署Prometheus+Grafana监控集群状态(如节点资源、Pod状态、网络流量),设置阈值告警(如节点磁盘空间超过80%、Pod内存使用超过90%),及时发现潜在问题。

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


若转载请注明出处: Ubuntu K8S故障排查指南
本文地址: https://pptw.com/jishu/726142.html
Ubuntu K8S日志管理技巧 Ubuntu K8S监控工具推荐

游客 回复需填写必要信息