ubuntu

Ubuntu Kubernetes 故障排查方法

小樊
40
2025-10-12 06:32:30
栏目: 智能运维

Ubuntu上Kubernetes故障排查方法

一、基础状态检查

1. 节点状态检查
使用kubectl get nodes -o wide查看所有节点的状态(是否为Ready)、IP地址及Kubernetes版本;通过kubectl describe node <节点名>获取节点详细信息,重点关注Conditions字段(如ReadyDiskPressureMemoryPressure等),若节点状态为NotReady,需进一步排查节点问题。

2. Kubernetes组件状态检查
运行kubectl get pods -n kube-system查看系统组件(如kube-apiserveretcdkube-controller-managerkube-schedulerkube-proxy等)的Pod状态,确保所有组件均为RunningRestartCount为0。若组件状态异常,需检查对应Pod的日志(kubectl logs <pod-name> -n kube-system)。

二、节点级故障排查

1. kubelet服务状态
kubelet是Ubuntu节点上管理Pod的核心服务,通过systemctl status kubelet检查其运行状态(是否为active (running));若服务未运行,使用systemctl start kubelet启动;通过journalctl -u kubelet -f实时查看kubelet日志,重点关注证书过期容器运行时异常(如containerd问题)、节点资源不足等错误。

2. 资源使用情况
使用df -h /var/lib/kubelet检查kubelet数据目录的磁盘空间(建议保留至少10%空闲空间);free -m查看内存使用情况(避免OOM导致节点崩溃);top -p $(pgrep kubelet)监控kubelet进程的CPU占用。若磁盘空间不足,清理旧日志(/var/log/)、未使用的镜像(docker image prune)或扩展节点磁盘。

3. 容器运行时检查
Ubuntu节点上通常使用containerd作为容器运行时,通过systemctl status containerd检查其状态;ctr containers list查看容器列表(确认Kubernetes管理的容器是否正常运行)。若containerd异常,需重启服务(systemctl restart containerd)并查看其日志(journalctl -u containerd)。

三、网络故障排查

1. 基础网络连通性
使用ping <API-Server-IP>测试节点到Kubernetes API Server的网络连通性;nc -zv <API-Server-IP> 6443检查API Server端口(默认6443)是否开放。若无法连通,需检查节点网络配置(如防火墙、路由)或API Server的安全组规则。

2. CNI插件状态
CNI插件(如Calico、Flannel)负责节点间网络通信,通过kubectl get pods -n kube-system -l k8s-app=<CNI插件名>(如calico-nodeflannel)查看插件Pod状态;kubectl logs <cni-pod-name> -n kube-system查看插件日志,重点关注网络配置错误节点间路由失败等问题。

3. 网络策略与DNS配置
使用kubectl get networkpolicies检查是否有网络策略限制了Pod或Service的通信(如禁止跨命名空间访问);cat /etc/resolv.conf查看节点的DNS配置(确保nameserver指向CoreDNS的ClusterIP,默认10.96.0.10);通过nslookup <service-name>.<namespace>.svc.cluster.local测试DNS解析是否正常。

四、集群级故障排查

1. 证书有效性
Kubernetes集群的证书(如kubelet客户端证书、API Server证书)过期会导致节点或组件不可用。使用openssl x509 -in /var/lib/kubelet/pki/kubelet-client-current.pem -noout -dates检查kubelet客户端证书的有效期(需在过期前更新);若证书过期,可通过kubeadm certs renew命令续订。

2. 内核与系统日志
使用dmesg -T | grep -i "oom\|error"检查内核日志,重点关注OOM(内存不足)硬件错误(如磁盘坏道)等问题;/var/log/syslogjournalctl -xe查看系统日志,排查与Kubernetes相关的系统级错误。

五、常见问题处理

1. Pod无法启动

2. Service无法访问

3. 节点NotReady

0
看了该问题的人还看了