温馨提示×

怎样排查debian k8s故障

小樊
36
2026-09-26 12:10:29
栏目: 智能运维

排查 Debian 上 Kubernetes(k8s)故障通常要从系统层 → 容器运行时 → k8s 组件 → 应用层逐层定位。下面给你一套实用排查思路 + 常用命令。


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

1. 系统状态

# 系统负载、内存、磁盘
top
free -h
df -h

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

k8s 对时间敏感:

timedatectl status

若不同步:

sudo apt install chrony -y
sudo systemctl enable --now chrony

3. 防火墙 / 网络

Debian 常见:

sudo ufw status
iptables -L -n -v

k8s 需要端口(如 6443、10250 等)放行。

4. 内核参数

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

应为 1,否则:

cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables=1
net.ipv4.ip_forward=1
EOF
sysctl --system

二、容器运行时排查(containerd / docker)

containerd(推荐)

systemctl status containerd
journalctl -u containerd -f

Docker(旧方案)

systemctl status docker
journalctl -u docker -f

测试拉镜像:

crictl pull nginx

三、Kubernetes 组件排查

1. kubelet(节点核心)

systemctl status kubelet
journalctl -u kubelet -f

常见错误:

  • 证书过期
  • kubeconfig 错误
  • 容器运行时未就绪

2. 控制平面(Master)

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

查看日志:

journalctl -u kube-apiserver -f

3. 节点状态

kubectl get nodes
kubectl describe node <node-name>

常见状态:

  • NotReady
  • DiskPressure
  • MemoryPressure

四、Pod / 应用层排查

1. 查看 Pod 状态

kubectl get pods -A
kubectl get pods -n <namespace>

2. 描述 Pod

kubectl describe pod <pod-name> -n <ns>

重点看:

  • Events
  • FailedScheduling
  • ImagePullBackOff
  • CrashLoopBackOff

3. 查看日志

kubectl logs <pod-name> -n <ns>
kubectl logs <pod-name> -c <container> -n <ns>

4. 进入容器

kubectl exec -it <pod> -- sh

五、网络与 DNS 排查

1. DNS 是否可用

kubectl run test --rm -it --image=busybox -- sh
nslookup kubernetes.default

2. 网络插件状态(Calico / Flannel)

kubectl get pods -n kube-system

示例(Flannel):

kubectl logs -n kube-system kube-flannel-ds-xxxx

六、证书与权限问题

1. 证书是否过期

kubeadm certs check-expiration

2. kubeconfig

kubectl config view

七、快速定位思路总结

节点 NotReady → kubelet / 网络 / 资源
Pod 起不来 → 镜像 / 资源 / 配置
API 不通 → apiserver / 证书 / 网络
DNS 失败 → CoreDNS / 网络插件


八、常用“救命”命令

# 看所有组件日志
journalctl -u kubelet -u containerd -u docker -f

# 重置节点(谨慎)
kubeadm reset

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

  • Debian 版本
  • k8s 安装方式(kubeadm / 二进制)
  • 具体报错信息

我可以帮你精准定位某一类故障。

0 踩