以下是在Ubuntu上进行Kubernetes故障排查的关键步骤:
一、基础状态检查
- 节点状态
kubectl get nodes # 查看节点是否处于Ready状态 kubectl describe node <节点名> # 获取节点详细信息 - 组件版本与状态
kubeadm version && kubelet --version && kubectl version # 确保版本兼容 sudo systemctl status kubelet # 检查kubelet服务状态
二、日志与配置排查
- Kubelet日志
sudo journalctl -u kubelet -f # 实时查看kubelet日志 - Pod/容器日志
kubectl logs-c <容器名> # 查看特定容器日志 kubectl describe pod # 获取Pod事件和状态 - 配置文件检查
- 检查Kubelet配置:
/etc/kubernetes/kubelet.conf或/var/lib/kubelet/config.yaml - 确认CNI插件(如Calico/Flannel)配置正确
- 检查Kubelet配置:
三、网络与资源排查
- 网络连通性
ping <目标节点IP> # 测试节点间连通性 curl -I http://<服务IP>:<端口> # 检查服务端口可达性 traceroute <目标IP> # 追踪网络路径 - 资源使用情况
kubectl top nodes # 查看节点资源占用 df -h # 检查磁盘空间,清理不必要的文件
四、常见问题处理
- 镜像拉取失败:检查镜像名称、标签,配置私有仓库凭证或使用国内镜像源。
- CrashLoopBackOff:通过
kubectl logs定位容器崩溃原因,修复应用代码或配置。 - 网络策略阻断:使用
kubectl get netpol查看策略,调整规则允许必要通信。 - 磁盘空间不足:清理旧日志、未使用的镜像,或扩展节点磁盘。
五、高级工具辅助
- 集中式日志采集:部署Fluentd/Fluent Bit + Loki/Elasticsearch,实现日志统一存储与分析。
- 监控与告警:使用Prometheus+Grafana监控集群状态,设置资源阈值告警。
参考来源: