温馨提示×

centos k8s为什么卡顿

小樊
43
2026-09-06 11:34:51
栏目: 智能运维

CentOS 上运行 Kubernetes(k8s)出现卡顿,通常不是单一原因,而是多个层面叠加。下面按常见原因 → 排查方法 → 解决建议来系统说明。


一、系统资源层面(最常见)

1️⃣ CPU 资源不足

表现

  • kubelet、apiserver 延迟高
  • 节点 Load 高
  • Pod 频繁调度或重启

排查

top
htop
kubectl top nodes
kubectl top pods -A

解决

  • 限制 Pod 资源(requests/limits)
  • 避免 master 节点跑业务 Pod
  • 增加节点或扩容集群

2️⃣ 内存不足 / 频繁 OOM

表现

  • 系统卡死
  • kubelet 被杀
  • Pod 处于 OOMKilled

排查

free -h
dmesg | grep -i oom
kubectl describe pod <pod>

解决

  • 增加 swap(不推荐但可临时)
  • 设置合理 memory limit
  • 分离 etcd / apiserver 资源

3️⃣ 磁盘 IO 瓶颈(非常常见)

表现

  • kubelet 无响应
  • etcd 延迟极高
  • 节点 NotReady

排查

iostat -x 1
df -h
journalctl -u kubelet

解决

  • etcd 必须 SSD
  • 分开:
    • /var/lib/etcd
    • /var/lib/docker 或 /var/lib/containerd
  • 清理旧日志

二、CentOS 系统层面问题

4️⃣ 防火墙 / SELinux / 内核参数

表现

  • 网络抖动
  • 节点通信慢
  • DNS 解析卡

排查

getenforce
systemctl status firewalld

建议

setenforce 0
systemctl stop firewalld
systemctl disable firewalld

内核参数(常见优化):

net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
vm.swappiness = 0

5️⃣ CentOS 7 老内核问题

问题

  • 3.x 内核
  • cgroup / 网络栈 bug

建议

uname -a

升级到:

  • CentOS 8 / Stream
  • 或 内核 ≥ 4.18

三、Kubernetes 组件层面

6️⃣ etcd 性能问题(核心卡顿源)

表现

  • apiserver 超时
  • kubectl 命令慢
  • 大量 Event

排查

etcdctl endpoint status --write-out=table
kubectl get events --sort-by=.lastTimestamp

解决

  • 单独部署 etcd
  • 使用 SSD
  • 控制 object 数量(CRD / ConfigMap 不宜过多)

7️⃣ kube-proxy / CNI 网络问题

表现

  • Service 访问慢
  • Pod 间通信卡

排查

kubectl get pods -n kube-system
ip route

建议

  • 使用 Calico / Cilium
  • 避免 iptables 模式在大规模集群

四、容器运行时问题

8️⃣ Docker 太老 / containerd 配置差

现象

  • 镜像拉取慢
  • 节点卡死

建议

  • 使用 containerd
  • 配置镜像加速

五、快速定位 checklist(重点)

✅ 节点资源是否够
✅ etcd 是否在 SSD
✅ 是否有 OOM
✅ 内核版本
✅ 网络插件是否正常
✅ 是否 master 跑业务


六、如果你愿意,我可以更精确帮你

你可以补充:

  1. CentOS 版本(7 / 8 / Stream)
  2. k8s 版本
  3. 单节点 or 多节点
  4. 卡顿场景(kubectl?Pod?网络?)
  5. 是否 etcd / apiserver 报错

我可以直接帮你 定位是哪一层卡顿

0