温馨提示×

centos k8s部署注意啥

小樊
50
2026-09-15 13:15:18
栏目: 智能运维

CentOS 上部署 Kubernetes(k8s) 时,有一些系统层面和集群层面的坑和注意事项非常常见。下面按「部署前 → 部署中 → 部署后」给你一个实用清单。


一、部署前:系统准备(非常关键)

1️⃣ 系统版本选择

  • ✅ 推荐:CentOS 7.9 / CentOS Stream 8/9
  • ❌ 不推荐:CentOS 6(已淘汰)
  • 如果使用 CentOS Stream 9 + k8s 1.28+,注意:
    • 部分旧 CNI 插件可能不兼容

2️⃣ 关闭防火墙 / SELinux

systemctl stop firewalld
systemctl disable firewalld

setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

k8s 官方不要求在生产环境关 SELinux,但学习和测试环境建议关,避免莫名其妙的问题


3️⃣ 关闭 swap(必须)

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

kubelet 默认不允许使用 swap


4️⃣ 内核参数 & 模块

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

sysctl --system

modprobe br_netfilter

5️⃣ 时间同步(非常重要)

yum install -y chrony
systemctl enable chronyd
systemctl start chronyd

时间不同步会导致:证书失败、etcd 异常


二、容器运行时选择(容易踩坑)

✅ 推荐组合

k8s 版本 容器运行时
≤1.23 docker + cri-dockerd
≥1.24 containerd(推荐)

containerd 安装

yum install -y containerd
systemctl enable containerd
systemctl start containerd

⚠️ CentOS 上 docker 默认 cgroup driver 是 cgroupfs,k8s 要求 systemd


三、k8s 安装方式建议

新手 / 测试

kubeadm

yum install -y kubelet kubeadm kubectl
systemctl enable kubelet

生产环境

  • kubeadm + 高可用(多 master)
  • 或使用:
    • kubespray
    • Rancher RKE
    • 云厂商托管(ACK / TKE / EKS)

四、初始化集群注意点

kubeadm init \
  --pod-network-cidr=10.244.0.0/16 \
  --image-repository=registry.aliyuncs.com/google_containers

⚠️ 注意:

  • --pod-network-cidr 必须和 CNI 匹配
  • 国内环境一定要换镜像源

五、网络插件(CNI)选择

插件 特点
Flannel 简单,适合测试
Calico 生产推荐
Cilium 新趋势(eBPF)

Flannel 示例:

kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml

六、常见坑总结(血泪经验)

❌ 主机名不能用 localhost
❌ 多节点 hostname 必须唯一
❌ iptables 和 nftables 混用
❌ 忘记 kubeadm reset 就重装
❌ /var 分区太小(etcd 爆炸)
❌ 不配置 kubelet cgroup driver


七、生产部署额外建议

  • etcd 单独磁盘(SSD)
  • master 至少 3 节点
  • 使用 证书自动续期
  • 配置 Node 资源预留
  • 日志 & 监控(Prometheus + Grafana)

八、快速自检清单 ✅

  • [ ] 防火墙关闭
  • [ ] swap 关闭
  • [ ] 时间同步
  • [ ] 内核参数生效
  • [ ] 容器运行时正常
  • [ ] CNI 正常
  • [ ] kubelet 状态正常

如果你愿意,我可以:

  • ✅ 给你一份 CentOS 7 + kubeadm 一键脚本
  • ✅ 帮你规划 生产级 k8s 架构
  • ✅ 对比 docker vs containerd

你现在是 学习 / 测试 / 生产 环境?

0