温馨提示×

linux k8s为何崩溃

小樊
45
2026-10-27 21:22:41
栏目: 智能运维

在 Linux 上运行的 Kubernetes(k8s)崩溃通常不是“k8s 本身崩溃”这么简单,而是某个核心组件或节点异常导致集群不可用。下面按常见原因 → 现象 → 排查方向系统说明。


一、最常见原因分类

1️⃣ 节点资源耗尽(非常高概率)

K8s 对资源非常敏感。

常见原因

  • 内存 OOM(尤其是 etcd、kubelet)
  • 磁盘空间满(/var/lib 或 /var/log)
  • CPU 被打满
  • inode 耗尽

典型现象

  • Node 状态 NotReady
  • Pod 频繁 OOMKilled
  • kubelet 重启或退出

排查

free -h
df -h
df -i
top / htop
journalctl -u kubelet

✅ 重点目录:

  • /var/lib/etcd
  • /var/lib/kubelet
  • /var/log

2️⃣ etcd 出问题(集群“大脑”故障)

etcd 一旦异常,整个 k8s 基本“假死”。

常见原因

  • etcd 磁盘慢 / IO 高
  • etcd 数据损坏
  • 多节点 etcd 网络分区
  • etcd 超出 quota

现象

  • apiserver 报错 etcd timeout
  • kubectl 卡住
  • 创建/删除资源失败

排查

kubectl get cs
journalctl -u etcd
etcdctl endpoint health

3️⃣ kubelet 崩溃 / 被 kill

kubelet 是节点“管家”。

常见原因

  • kubelet 配置错误
  • 容器运行时异常(docker / containerd)
  • 证书过期
  • cgroup 驱动不一致

现象

  • Node NotReady
  • Pod 不调度
  • kubelet 进程消失

排查

systemctl status kubelet
journalctl -u kubelet -xe

4️⃣ 容器运行时异常(docker / containerd)

K8s 依赖底层 runtime。

常见原因

  • docker 崩溃
  • containerd 版本不兼容
  • 镜像拉取失败
  • 存储驱动问题

现象

  • Pod ContainerCreating 卡住
  • 节点 NotReady

排查

systemctl status containerd
systemctl status docker
ctr images list

5️⃣ 证书过期(常被忽略)

K8s 很多组件靠证书通信。

常见过期点

  • apiserver
  • kubelet
  • etcd
  • front-proxy

现象

  • kubectl 报 x509 certificate expired
  • 组件不断重启

排查

openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -dates

6️⃣ 网络组件崩溃(CNI)

没有网络 = Pod 全崩。

常见 CNI

  • flannel
  • calico
  • cilium

现象

  • Pod 无 IP
  • 跨节点不通
  • DNS 解析失败

排查

kubectl get pods -n kube-system
journalctl -u kubelet | grep cni

7️⃣ 内核 / 系统问题

Linux 层直接拖垮 k8s。

常见原因

  • 内核 BUG
  • 系统重启
  • 防火墙误杀端口
  • SELinux / iptables 冲突

关键端口

  • 6443(API)
  • 2379/2380(etcd)
  • 10250(kubelet)

二、快速定位思路(实战流程)

# 1. 看节点
kubectl get nodes

# 2. 看组件
kubectl get pods -n kube-system

# 3. 看系统
journalctl -u kubelet -n 200
df -h
free -h

# 4. 看日志
/var/log/messages
/var/log/syslog

三、如果是“整个集群直接挂”

优先怀疑:

  1. etcd
  2. 控制平面节点重启
  3. 共享存储故障
  4. 网络分区

四、你可以告诉我这些,我能精准判断

  • 是 单节点 / 多节点?
  • 是 kubeadm / 二进制 / 云厂商?
  • 报错日志(贴一段)
  • 崩溃前做了什么操作?

我可以帮你直接定位是哪一层炸了。

0 踩