温馨提示×

如何排查debian k8s故障

小樊
43
2026-09-29 10:08:42
栏目: 智能运维

在 Debian 上排查 Kubernetes(k8s)故障,通常遵循**“自底向上 + 分层定位”的思路:先确认系统/网络,再确认 k8s 组件,最后看工作负载。下面给你一套实用排查清单**。


一、基础环境与系统层排查(Debian)

1. 系统状态

uname -a
cat /etc/os-release
free -h
df -h
top / htop

2. 时间同步(非常重要)

k8s 对时间敏感:

timedatectl status
# 如有问题
apt install chrony
systemctl enable --now chrony

3. 内核参数 & 模块

sysctl net.bridge.bridge-nf-call-iptables
sysctl net.ipv4.ip_forward

lsmod | grep br_netfilter
# 若无
modprobe br_netfilter

4. 防火墙 / SELinux / 安全组

Debian 通常无 SELinux,但注意:

iptables -L -n -v
ufw status

k8s 节点之间需开放:

  • 6443(API)
  • 10250(kubelet)
  • 30000–32767(NodePort,如用)

二、容器运行时排查

1. 确认运行时

which docker containerd crictl
crictl info

2. 容器运行时状态

systemctl status containerd
journalctl -u containerd -f

三、Kubernetes 组件排查

1. kubelet(最常见故障点)

systemctl status kubelet
journalctl -u kubelet -f

常见错误:

  • cgroup driver 不一致
  • 证书过期
  • 无法连接 API Server

2. 控制平面(master)

systemctl status kube-apiserver
systemctl status kube-controller-manager
systemctl status kube-scheduler

如是用 kubeadm:

docker ps | grep kube
# 或
crictl ps

四、使用 kubectl 排查集群状态

1. 集群整体状态

kubectl cluster-info
kubectl get nodes -o wide
kubectl get cs

2. 节点异常

kubectl describe node <node-name>

重点看:

  • Conditions
  • Events
  • Allocatable / Capacity

3. Pod 故障

kubectl get pods -A
kubectl describe pod <pod> -n <ns>
kubectl logs <pod> -n <ns>
kubectl logs <pod> -p -n <ns>   # 前一个容器

4. 常见 Pod 状态含义

状态 可能原因
Pending 调度失败 / 资源不足
CrashLoopBackOff 应用启动失败
ImagePullBackOff 镜像拉取失败
Evicted 节点资源紧张

五、网络与服务排查

1. Service 不通

kubectl get svc,ep -n <ns>
  • endpoint 是否为空
  • kube-proxy 是否正常
kubectl get pods -n kube-system | grep kube-proxy

2. DNS 问题

kubectl exec -it <pod> -- nslookup kubernetes.default

检查 CoreDNS:

kubectl get pods -n kube-system
kubectl logs -n kube-system coredns-xxx

六、证书与权限问题

1. 证书过期(常见)

kubeadm certs check-expiration

2. kubeconfig

kubectl config view
cat ~/.kube/config

七、典型故障速查表

故障现象 排查点
Node NotReady kubelet / 资源 / 网络
Pod 一直 Pending 调度 / 资源
集群无法访问 API Server / 证书
网络不通 CNI / kube-proxy
升级后异常 版本兼容 / 配置变更

八、推荐排查顺序(总结)

  1. Debian 系统状态
  2. 容器运行时
  3. kubelet
  4. 控制平面
  5. kubectl 看节点/Pod
  6. 网络 / DNS
  7. 证书 / 权限

如果你愿意,可以告诉我:

  • Debian 版本
  • k8s 安装方式(kubeadm / 二进制 / 云)
  • 具体故障现象(Node NotReady?Pod 起不来?网络不通?)

我可以直接帮你定位具体原因 + 给修复命令。

0 踩