以下是Ubuntu上Kubernetes的故障排查步骤,涵盖节点、网络、组件等关键环节:
查看节点状态
kubectl get nodes -o wide # 查看节点状态、IP及版本
kubectl describe node <节点名> # 检查节点Conditions(如Ready、DiskPressure等)
NotReady
,重点关注kubelet
状态、网络连通性和资源使用。检查Kubernetes组件状态
kubectl get pods -n kube-system # 查看系统组件Pod(如kube-apiserver、etcd)是否正常
kubelet服务状态
systemctl status kubelet # 检查服务是否运行
journalctl -u kubelet -f # 查看日志,关注证书过期、容器运行时异常等
资源使用情况
df -h /var/lib/kubelet # 检查磁盘空间
free -m # 检查内存使用,避免OOM
top -p $(pgrep kubelet) # 监控kubelet进程资源占用
容器运行时检查
systemctl status containerd # 确认容器运行时正常
ctr containers list # 查看容器列表
基础网络连通性
ping <API-Server-IP> # 测试节点到API Server的连通性
nc -zv <API-Server-IP> 6443 # 检查6443端口(API Server)是否开放
CNI插件状态
kubectl get pods -n kube-system -l k8s-app=calico-node # 查看CNI插件Pod状态
kubectl logs <cni-pod-name> -n kube-system # 查看插件日志
网络策略与配置
kubectl get networkpolicies # 检查网络策略是否限制通信
cat /etc/resolv.conf # 确认DNS配置正确
证书有效性
openssl x509 -in /var/lib/kubelet/pki/kubelet-client-current.pem -noout -dates # 检查kubelet证书是否过期
内核与系统日志
dmesg -T | grep -i "oom\|error" # 检查内核日志中的OOM或硬件错误
kubectl debug node
进入节点执行诊断命令(需特权模式)。kubeadm check
或第三方工具(如sonobuoy
)验证集群配置。参考来源: