温馨提示×

怎么优化CentOS K8s部署

小樊
46
2026-08-31 00:11:35
栏目: 智能运维

下面按实战角度给你一套优化 CentOS + Kubernetes 部署的完整思路,覆盖 系统层、K8s 安装、运行期、网络、存储、安全、维护 六个维度。适合生产环境,也适合想“跑得更快更稳”的场景。


一、系统层优化(CentOS 必做)

1️⃣ 内核参数优化(生产必调)

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
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
vm.swappiness = 0
vm.overcommit_memory = 1
fs.inotify.max_user_watches = 524288
fs.file-max = 2097152
EOF

sysctl --system

✅ 解决:

  • K8s 网络异常
  • 文件句柄不足
  • 容器监控异常

2️⃣ 关闭 swap(非常重要)

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

K8s 官方强制要求


3️⃣ 关闭 SELinux & 防火墙(或精细化放行)

setenforce 0
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

systemctl disable firewalld --now

✅ 生产环境建议:防火墙保留,放通 K8s 端口


4️⃣ 时间同步(集群必做)

yum install -y chrony
systemctl enable chronyd --now

二、K8s 安装优化(kubeadm 方式)

✅ 推荐版本组合

组件 推荐
OS CentOS 7.9 / Rocky 8
K8s 1.26–1.28
Runtime containerd

1️⃣ 使用 containerd(比 Docker 更稳定)

yum install -y containerd
mkdir -p /etc/containerd
containerd config default > /etc/containerd/config.toml

优化 SystemdCgroup = true

sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
systemctl restart containerd

2️⃣ kubeadm 初始化优化

kubeadm init \
  --pod-network-cidr=10.244.0.0/16 \
  --kubernetes-version=v1.28.0 \
  --cri-socket=unix:///run/containerd/containerd.sock

✅ 生产建议:

  • 固定版本
  • 指定 CRI socket
  • 分离 etcd(大规模)

三、网络优化(最常见性能瓶颈)

✅ 推荐 CNI

场景 CNI
小集群 Flannel
大集群 Calico
性能优先 Cilium(eBPF)

Calico 优化建议

# 开启 IPIP 模式
calico_backend: "bird"
modprobe br_netfilter

MTU 优化(云环境尤其重要)

# 云环境常见
mtu: 1450

四、K8s 运行期优化

1️⃣ kubelet 参数优化

--max-pods=110
--eviction-hard=memory.available<500Mi
--kube-reserved=cpu=500m,memory=1Gi
--system-reserved=cpu=500m,memory=1Gi

✅ 防止节点 OOM


2️⃣ 资源 Request / Limit 必须写

resources:
  requests:
    cpu: 100m
    memory: 128Mi
  limits:
    cpu: 500m
    memory: 512Mi

3️⃣ 使用 Pod 反亲和性

affinity:
  podAntiAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
    - labelSelector:
        matchLabels:
          app: nginx
      topologyKey: kubernetes.io/hostname

五、存储 & 镜像优化

1️⃣ 镜像优化

  • 使用国内源
  • 使用私有 Harbor
  • 镜像瘦身(多阶段构建)

2️⃣ 存储优化

✅ 推荐:

  • 本地盘 → local-path
  • 共享存储 → NFS / Ceph / OpenEBS
mkdir -p /data/volumes

六、安全 & 维护优化

✅ 安全

  • 禁用 root SSH
  • 使用 RBAC
  • 集群证书定期轮换
  • 启用 audit log

✅ 维护

  • 使用 kubelet-config
  • 定期升级补丁
  • 启用 descheduler

七、一键检查清单 ✅

kubectl get nodes
kubectl get pods -A
kubectl top node
kubectl top pod

八、常见性能问题定位

问题 排查
Pod 起不来 kubectl describe pod
网络慢 CNI / MTU
节点 NotReady kubelet / containerd
OOM request/limit

九、你可以继续问我

你可以直接说你的实际情况:

  • 单机 / 多机
  • CentOS 7 还是 8
  • kubeadm / 二进制
  • 部署用途(测试 / 生产)
  • 当前卡在哪一步

我可以给你 定制优化方案 + 命令级步骤

0