以下是针对Debian系统上Kubernetes部署常见问题的系统性排查步骤,覆盖从基础环境到组件状态的多个维度:
确保Debian系统满足Kubernetes的最低要求(至少2GB RAM、2个CPU核心、10GB磁盘空间),并通过sudo apt-get update && sudo apt-get upgrade -y更新系统至最新版本,避免因软件包过旧导致兼容性问题。
使用systemctl status kubelet、systemctl status kube-proxy命令检查kubelet、kube-proxy等服务是否处于active (running)状态;若未运行,通过systemctl start kubelet启动服务,并通过journalctl -u kubelet查看服务日志,定位启动失败原因(如依赖缺失、配置错误)。
运行kubectl get nodes查看节点状态,若节点显示为NotReady,需进一步排查:
ping <其他节点IP>);journalctl -u kubelet -f),确认节点是否无法与Master通信(如证书过期、网络插件未就绪)。通过kubectl get pods -n kube-system列出Master节点核心组件(如kube-apiserver、kube-controller-manager、kube-scheduler)的Pod状态。若组件Pod处于CrashLoopBackOff或Pending状态,需查看对应Pod日志(kubectl logs <pod-name> -n kube-system),定位组件启动失败的具体原因(如配置文件错误、资源不足)。
使用kubectl get pods --all-namespaces查看所有命名空间的Pod状态。若Pod无法运行(如ImagePullBackOff、CrashLoopBackOff):
kubectl describe pod <pod-name> -n <namespace>查看Pod事件(如镜像拉取失败、资源限制、调度错误);kubectl exec -it <pod-name> -n <namespace> -- /bin/sh),检查容器内应用日志或配置文件。kubectl get pods -n kube-system -l k8s-app=kube-dns查看CoreDNS Pod状态(若CoreDNS无法运行,需修复网络插件);kubectl run test-pod --image=busybox --rm -it -- /bin/sh创建临时Pod,使用ping或wget测试与其他Pod(如kubernetes.default.svc)的连通性;nslookup kubernetes.default,确认DNS服务正常。使用kubectl get pv、kubectl get pvc查看持久化卷(PV)和持久化卷声明(PVC)的状态。若PVC处于Pending状态,需检查:
kubectl get storageclass);kubectl get pods -n kube-system | grep -E 'storage|csi');journalctl -xe、dmesg查看系统级日志,定位硬件或内核级问题(如OOM Killer杀死进程);journalctl -u kubelet查看kubelet日志,kubectl logs -n kube-system <kube-apiserver-pod>查看API Server日志,从中获取错误详情(如证书错误、配置冲突)。kubectl exec -it <pod-name> -n <namespace> -- /bin/sh进入Pod内部,手动执行命令(如检查应用配置、网络连接);kubectl debug -it <pod-name> -n <namespace> --image=busybox --target=<container-name>创建临时调试容器,解决Pod内无调试工具的问题。若以上步骤无法解决问题,查阅Kubernetes官方故障排查指南(Troubleshooting)或在社区论坛(如Stack Overflow、Kubernetes Slack)搜索类似问题,获取针对性解决方案。