排查 Debian 上 Kubernetes(k8s)问题,通常可以按**“分层排查”的思路进行:从节点/系统 → 容器运行时 → k8s 组件 → 工作负载 → 网络/存储**。下面给你一套实用排查手册。
uname -a
cat /etc/os-release
free -h
df -h
top
k8s 对时间非常敏感:
timedatectl status
# 若不同步
apt install chrony -y
systemctl enable --now chrony
Debian 常用 nftables 或 iptables:
iptables -L -n
systemctl status nftables
k8s 通常要求:
systemctl status containerd
journalctl -u containerd -f
ctr images ls
crictl ps
crictl images
systemctl status docker
docker ps -a
常见问题:
systemctl status kubelet
journalctl -u kubelet -f
常见错误:
Failed to start ContainerManagernode not readyPLEG is not healthysystemctl status kube-apiserver
systemctl status kube-controller-manager
systemctl status kube-scheduler
如使用 kubeadm:
docker ps | grep kube
# 或
crictl ps | grep kube
kubectl get nodes
kubectl describe node <node-name>
kubectl get pods -A
kubectl describe pod <pod-name> -n <ns>
kubectl logs <pod-name> -n <ns>
kubectl logs <pod-name> -p -n <ns> # 上一次崩溃日志
kubectl get events -A --sort-by=.metadata.creationTimestamp
排查顺序:
kubectl describe pod <pod>
常见原因:
crictl pull <image>
检查:
kubectl logs <pod> --previous
常见:
kubectl get pods -n kube-system
cat /proc/sys/net/ipv4/ip_forward
sysctl net.bridge.bridge-nf-call-iptables
kubectl run test --image=busybox -it --rm -- sh
nslookup kubernetes.default
journalctl -xe
kubeadm reset
# 清理后重来
systemctl status kubeletjournalctl -u kubelet -fkubectl get nodeskubectl describe nodekubectl get pods -Akubectl describe / logs如果你愿意,可以把具体报错信息(例如 kubectl 输出、journalctl 日志、节点状态)发出来,我可以直接帮你定位是哪一层的问题。