温馨提示×

centos跑k8s为什么卡

小樊
52
2026-09-09 09:46:53
栏目: 智能运维

CentOS 上跑 Kubernetes 感觉“卡”,通常不是单一原因,而是多个层面叠加。下面按最常见 → 较少见的顺序给你梳理,并给排查思路。


一、最常见原因(90% 场景)

1️⃣ 系统资源不足(CPU / 内存)

K8s 本身 + 组件就很吃资源:

  • kube-apiserver
  • etcd
  • kube-controller-manager
  • kube-scheduler
  • kubelet
  • 容器运行时(docker / containerd)

典型现象

  • kubectl 命令卡
  • 节点 NotReady
  • Pod 一直 Pending / ContainerCreating

排查

top
free -h
df -h

建议最低配置

  • Master:2C4G(生产建议 4C8G)
  • Node:2C4G 起步

2️⃣ Swap 没关(非常常见)

Kubernetes 官方不支持 Swap

现象

  • kubelet 启动慢
  • 节点周期性卡顿
  • OOM 或调度异常

检查

swapon -s

解决

swapoff -a
sed -i '/swap/d' /etc/fstab

3️⃣ 防火墙 / SELinux 干扰

CentOS 默认:

  • firewalld
  • SELinux = enforcing

现象

  • 节点间通信慢
  • Pod 网络不通
  • 端口 timeout

快速验证

getenforce
systemctl status firewalld

生产建议

setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
systemctl stop firewalld
systemctl disable firewalld

4️⃣ 容器运行时配置问题

CentOS 常见:

  • docker + cgroup driver 不一致
  • 使用旧 docker(20 以下)

现象

  • kubelet 频繁重启
  • 节点 load 高

检查

docker info | grep -i cgroup
cat /var/lib/kubelet/config.yaml | grep cgroup

建议

  • 使用 systemd cgroup driver
  • 或直接使用 containerd

二、网络和存储相关(中等概率)

5️⃣ 网络插件问题(flannel / calico)

常见问题:

  • 网络插件没起来
  • 跨节点不通
  • DNS 解析慢

检查

kubectl get pods -n kube-system
journalctl -u kubelet -f

6️⃣ etcd 性能问题

etcd 对磁盘 I/O 非常敏感

现象

  • apiserver 卡
  • 集群操作延迟高

检查

etcdctl endpoint status --write-out=table
iostat -x 1

建议

  • etcd 用 SSD
  • 不要和 master 混部大量业务 Pod

三、CentOS 特有坑

7️⃣ 内核版本太低

CentOS 7 默认 3.10 内核:

  • 网络 / cgroup 问题多
  • 容器稳定性差

建议

  • CentOS 7 → 升级内核 ≥ 4.18
  • 或直接用 CentOS Stream / Rocky / Alma

8️⃣ 磁盘满了(尤其是 /var)

kubelet / 容器日志很容易打满磁盘

df -h /var
journalctl --disk-usage

四、快速自查清单(建议你照着做)

# 1. 资源
top
free -h

# 2. swap
swapon -s

# 3. 防火墙/SELinux
getenforce
systemctl status firewalld

# 4. kubelet
journalctl -u kubelet -n 100 --no-pager

# 5. 节点状态
kubectl get nodes
kubectl describe node <node>

五、如果你愿意,我可以更精准帮你

你可以补充:

  1. CentOS 版本(7 / 8 / Stream)
  2. K8s 版本
  3. 单节点还是多节点
  4. 卡的具体表现(命令卡 / Pod 卡 / 网络卡)
  5. 用的什么运行时(docker / containerd)

我可以直接给你针对性的修复方案

0