调试 CentOS 上的 Kubernetes(k8s)通常分为集群层、节点层、Pod/容器层、网络层几个维度。下面我按“从快到慢、从外到内”的方式给你一套实用调试思路。
kubectl get nodes
kubectl get pods -A
kubectl get cs
重点关注:
ReadyCrashLoopBackOff / Pendingsystemctl status kubelet
journalctl -u kubelet -f
常见问题:
cgroup driver 与 Docker 不一致查看驱动:
docker info | grep -i cgroup
cat /var/lib/kubelet/config.yaml | grep cgroup
swapoff -a
sed -i '/swap/s/^/#/' /etc/fstab
kubectl describe pod <pod-name> -n <namespace>
kubectl logs <pod-name> -n <namespace>
kubectl logs <pod-name> -c <container> -n <namespace>
kubectl exec -it <pod-name> -- /bin/sh
| 状态 | 可能原因 |
|---|---|
| Pending | 资源不足 / 节点亲和性 |
| CrashLoopBackOff | 程序启动失败 |
| ImagePullBackOff | 镜像拉取失败 |
| Terminating | 卡在 preStop / 节点失联 |
kubectl get pods -n kube-system | grep -E 'flannel|calico|cilium'
systemctl stop firewalld
systemctl disable firewalld
或放行端口(6443、10250、8472 等)
kubectl run test --image=busybox -it --rm -- sh
ping <service-ip>
kubectl exec -it -n kube-system etcd-master -- etcdctl endpoint health
vi /var/lib/kubelet/config.yaml
logging:
verbosity: 4
systemctl restart kubelet
kubectl debug -it <pod> --image=busybox
如果你能告诉我:
我可以给你更精准的调试命令和解决方案。