排查 Debian 上 Kubernetes(k8s)故障,可以按「从节点到集群、从底层到上层」的思路一步步来。下面给你一套实用排查清单。
uname -a
cat /etc/os-release
✅ 要求:
timedatectl
如果时间不同步:
apt install -y chrony
systemctl enable --now chrony
iptables -L -n
ufw status
k8s 端口示例:
systemctl status kubelet
journalctl -u kubelet -f
failed to find cgroupcontainer runtime not runningnode not readycontainerd --version
crictl info
Debian 常用:
kubectl get nodes
kubectl describe node <node-name>
重点看:
kubectl get pods -A
kubectl describe pod <pod> -n <ns>
kubectl logs <pod> -n <ns>
kubectl logs <pod> -n <ns> -c <container>
| 状态 | 可能原因 |
|---|---|
| Pending | 资源不足 / 调度失败 |
| CrashLoopBackOff | 程序启动失败 |
| ImagePullBackOff | 镜像拉不到 |
| Evicted | 节点资源耗尽 |
kubectl get pods -n kube-system
kubectl exec -it <pod> -- ping <service>
kubectl exec -it <pod> -- nslookup <service>
kubectl get cs
kubectl get pods -n kube-system
重点组件:
ETCDCTL_API=3 etcdctl \
--endpoints=https://127.0.0.1:2379 \
--cacert=/etc/kubernetes/pki/etcd/ca.crt \
--cert=/etc/kubernetes/pki/etcd/server.crt \
--key=/etc/kubernetes/pki/etcd/server.key \
endpoint health
✅ swap 未关闭
swapoff -a
sed -i '/swap/d' /etc/fstab
✅ cgroup driver 不一致 containerd:
SystemdCgroup = true
✅ 内核参数
sysctl net.bridge.bridge-nf-call-iptables=1
kubectl get nodeskubectl describe nodejournalctl -u kubeletkubectl describe podkubectl logs如果你愿意,可以告诉我:
我可以直接帮你精确定位问题。