在 Debian 上调试 Kubernetes(K8s)通常分为 集群层面、节点层面 和 应用层面。下面按常见场景给你一套比较系统的调试思路(适用于 kubeadm 部署的 Debian 环境,也适用于其他部署方式)。
cat /etc/debian_version
uname -a
确认:
free -m
swapon --show
临时关闭:
sudo swapoff -a
永久关闭(编辑 /etc/fstab,注释 swap 行)
K8s 现在默认使用 containerd。
systemctl status containerd
journalctl -u containerd -f
检查配置:
cat /etc/containerd/config.toml
常见问题:
SystemdCgroup = true 是否开启重启:
systemctl restart containerd
systemctl status kubelet
journalctl -u kubelet -xe
常见错误:
修复示例(重置并重新初始化):
kubeadm reset
kubeadm init
kubeadm init --v=5
查看详细日志:
journalctl -u kubelet -f
cat /var/log/syslog | grep kube
kubectl get nodes
kubectl describe node <node-name>
常见状态:
NotReady → CNI / kubelet / 网络问题SchedulingDisabled → 被 cordonkubectl get pods -A
kubectl describe pod <pod> -n <namespace>
kubectl logs <pod> -n <namespace>
Pod 常见状态:
Pending → 资源不足 / scheduler 问题CrashLoopBackOff → 容器启动失败ImagePullBackOff → 镜像拉取失败kubectl get events --sort-by=.metadata.creationTimestamp
常见:Calico / Flannel / Cilium
kubectl get pods -n kube-system
检查 CNI 配置:
ls /etc/cni/net.d/
kubectl run test --image=busybox --rm -it -- sh
ping <service-ip>
nslookup kubernetes
kubectl cluster-info
kubectl get componentstatuses
查看 apiserver 日志:
docker logs <apiserver-container>
# 或
journalctl -u kubelet -f
kubectl config view
cat ~/.kube/config
Debian + K8s 常见坑:
查看版本:
kubelet --version
kubectl version
containerd --version
建议:
# 查看所有组件
kubectl get componentstatuses
# 查看所有命名空间
kubectl get ns
# 查看资源使用
kubectl top node
kubectl top pod -A
# 进入容器
kubectl exec -it <pod> -- sh
# 查看网络策略
kubectl get networkpolicies -A
你可以直接贴出:
kubectl get nodes 输出kubectl describe pod <pod>journalctl -u kubelet -n 50我可以 直接帮你定位问题,而不是泛泛而谈。