温馨提示×

centos k8s部署慢什么原因

小樊
41
2026-10-03 09:56:42
栏目: 智能运维

在 CentOS 上部署 Kubernetes(k8s)慢,通常不是单一原因,而是多个环节叠加。下面按常见程度给你一个系统性的排查清单。


一、镜像拉取慢(最常见)

1. 镜像源问题

  • 默认从 k8s.gcr.io 或 registry.k8s.io 拉镜像
  • CentOS 服务器在国内或网络受限环境会非常慢

✅ 解决:

  • 使用国内镜像:
    kubeadm init --image-repository registry.aliyuncs.com/google_containers
    
  • 或提前拉取:
    docker pull registry.aliyuncs.com/google_containers/kube-apiserver:v1.28.0
    

2. 容器运行时慢

  • 使用 docker + containerd 兼容层
  • 磁盘 IO 差(云盘、机械盘)

✅ 建议:

  • 使用 containerd 而非 docker
  • 使用 SSD

二、系统环境未优化(CentOS 特有)

1. 防火墙 / SELinux

  • SELinux 开启会导致 kubelet 启动慢
  • firewalld 规则复杂

✅ 建议:

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

2. swap 未关闭

  • kubelet 对 swap 非常敏感
swapoff -a
sed -i '/swap/d' /etc/fstab

三、kubeadm init 慢

1. 等待 etcd / apiserver 就绪

常见卡点:

  • etcd 启动慢(磁盘 IO)
  • 证书生成慢(熵池不足)

✅ 解决熵池问题:

yum install -y haveged
systemctl start haveged
systemctl enable haveged

2. hostname 解析问题

  • kubeadm 依赖 hostname 解析

✅ 检查:

hostnamectl
cat /etc/hosts

示例:

127.0.0.1   localhost
192.168.1.10 master

四、网络插件部署慢

1. CNI 插件拉镜像慢

  • Calico / Flannel 镜像大
  • 从 quay.io 拉取慢

✅ 解决:

  • 使用国内镜像
  • 提前下载 CNI 镜像

2. 网络不通

  • 节点之间 6443 / 10250 不通
  • 路由或 iptables 异常

✅ 检查:

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

五、硬件 / 资源问题

  • 内存 < 2G:kubelet 频繁 OOM
  • CPU 低负载:etcd 慢
  • 云服务器突发性能(CPU 积分)

✅ 建议最低配置:

  • Master:2C4G
  • Node:2C4G

六、CentOS 版本问题

  • CentOS 7:
    • 内核旧(3.10)
    • systemd / cgroup 问题多
  • CentOS 8 / Stream:
    • 部分组件不兼容

✅ 建议:

  • 使用 CentOS 7.9 + 升级内核
  • 或 Rocky / Alma / Ubuntu

七、快速定位方法

# 看 kubeadm 卡在哪
kubeadm init --v=5

# 看 kubelet
journalctl -u kubelet -f

# 看 pod
kubectl get pods -A

总结(最常见 Top 3)

  1. ✅ 镜像拉取慢(国外源)
  2. ✅ SELinux / swap / 防火墙
  3. ✅ 磁盘 IO 差(etcd 慢)

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

  • CentOS 版本
  • k8s 版本
  • 部署方式(kubeadm / 二进制 / 工具)
  • 具体卡在哪一步

我可以给你精准优化方案。

0 踩