下面按实战角度给你一套优化 CentOS + Kubernetes 部署的完整思路,覆盖 系统层、K8s 安装、运行期、网络、存储、安全、维护 六个维度。适合生产环境,也适合想“跑得更快更稳”的场景。
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
✅ 解决:
swapoff -a
sed -i '/swap/d' /etc/fstab
K8s 官方强制要求
setenforce 0
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
systemctl disable firewalld --now
✅ 生产环境建议:防火墙保留,放通 K8s 端口
yum install -y chrony
systemctl enable chronyd --now
| 组件 | 推荐 |
|---|---|
| OS | CentOS 7.9 / Rocky 8 |
| K8s | 1.26–1.28 |
| Runtime | containerd |
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
kubeadm init \
--pod-network-cidr=10.244.0.0/16 \
--kubernetes-version=v1.28.0 \
--cri-socket=unix:///run/containerd/containerd.sock
✅ 生产建议:
| 场景 | CNI |
|---|---|
| 小集群 | Flannel |
| 大集群 | Calico |
| 性能优先 | Cilium(eBPF) |
# 开启 IPIP 模式
calico_backend: "bird"
modprobe br_netfilter
# 云环境常见
mtu: 1450
--max-pods=110
--eviction-hard=memory.available<500Mi
--kube-reserved=cpu=500m,memory=1Gi
--system-reserved=cpu=500m,memory=1Gi
✅ 防止节点 OOM
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 500m
memory: 512Mi
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchLabels:
app: nginx
topologyKey: kubernetes.io/hostname
✅ 推荐:
mkdir -p /data/volumes
kubelet-configdeschedulerkubectl get nodes
kubectl get pods -A
kubectl top node
kubectl top pod
| 问题 | 排查 |
|---|---|
| Pod 起不来 | kubectl describe pod |
| 网络慢 | CNI / MTU |
| 节点 NotReady | kubelet / containerd |
| OOM | request/limit |
你可以直接说你的实际情况:
我可以给你 定制优化方案 + 命令级步骤。