CentOS 上 Kubernetes 部署的性能调优要点
一 基础系统与内核
- 升级内核与系统版本:在 CentOS 7.9 上运行 **Kubernetes 1.28+(尤其是 1.31)**常见网络与连接跟踪性能问题,建议升级至 Kernel 5.10+ 或迁移到 CentOS Stream 8 / Rocky Linux 8 / AlmaLinux 8 等更新内核的系统,以获得更好的 IPVS/eBPF/VXLAN 支持与性能表现。
- 关闭 Swap:临时执行
swapoff -a,并在 /etc/fstab 中注释 swap 分区,避免内存交换影响稳定性与延迟。
- 基础 sysctl 与桥接转发:创建
/etc/sysctl.d/k8s.conf,启用桥接流量走 iptables、开启转发,并适度降低 swappiness:
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
vm.swappiness = 10
执行 sysctl --system 生效。
- 文件句柄与 inotify:提升可打开文件与 inotify 上限,缓解大规模应用与文件监听带来的瓶颈:
fs.file-max = 1000000
fs.inotify.max_user_instances = 524288
fs.inotify.max_user_watches = 524288
- 网络与连接跟踪:提升 ARP 缓存与 conntrack 能力,减少高并发下丢包与超时:
net.ipv4.neigh.default.gc_thresh1 = 1024
net.ipv4.neigh.default.gc_thresh2 = 4096
net.ipv4.neigh.default.gc_thresh3 = 8192
net.netfilter.nf_conntrack_max = 10485760
net.netfilter.nf_conntrack_tcp_timeout_established = 300
net.netfilter.nf_conntrack_buckets = 655360
net.core.netdev_max_backlog = 10000
- 时间同步:部署 Chrony 并启用服务,保证节点间时间一致性,避免证书校验与调度异常。
二 容器运行时与 kubelet
- 运行时选择与驱动:优先使用 containerd(Kubernetes 自 v1.24 起默认推荐);若使用 Docker,确保与 kubelet 的 cgroup 驱动一致(systemd),避免资源争用。
- Docker 优化示例(/etc/docker/daemon.json):
{
“exec-opts”: [“native.cgroupdriver=systemd”],
“log-driver”: “json-file”,
“log-opts”: { “max-size”: “100m”, “max-file”: “3” },
“storage-driver”: “overlay2”,
“registry-mirrors”: [“https://docker.mirrors.ustc.edu.cn”]
}
- kubelet 关键参数:根据节点资源与业务规模调整 –max-pods(常见为 110 或更高)、镜像并发拉取与超时等,提升节点承载与启动速度。
三 网络与 kube-proxy
- CNI 插件选择:优先选择性能与策略能力均衡的 Calico(支持 BGP/NetworkPolicy),或根据场景选择 Flannel 等成熟方案。
- 服务代理模式:在大规模或高并发场景下,将 kube-proxy 切换为 IPVS 模式,并优化连接跟踪参数(如 –conntrack-max、–conntrack-ttl),显著降低连接开销、提升吞吐。
- 内核网络栈:确保启用桥接与转发(见“基础系统”部分),为大流量与大量短连接场景预留足够的 conntrack 与网络队列能力。
四 控制平面与 etcd 调优
- etcd 性能要点:使用 SSD 存储,部署 3/5 节点 高可用集群;适度提高 –quota-backend-bytes(默认 2G),并合理设置 –heartbeat-interval 与 –election-timeout 以适配网络延迟;为 kube-apiserver 的 event 使用独立后端或隔离存储,降低事件写入对核心数据的干扰。
- API Server 并发:根据集群规模提升 –max-requests-inflight 与 –max-mutating-requests-inflight,避免控制面成为瓶颈(如节点数 1000–3000 与 ≥3000 的推荐值)。
- 控制器与调度器:启用 leader election 保证高可用,并对与 API Server 的 QPS 进行限流,防止过载。
五 存储 调度 弹性与可观测
- 存储优化:优先 SSD/NVMe 与高性能存储类(如 Ceph/GlusterFS/云盘),为不同负载配置差异化 StorageClass 与回收策略,减少 I/O 抖动与容量浪费。
- 调度与弹性:合理使用 节点亲和/反亲和 与 拓扑分布,降低跨域与跨机架流量;结合 HPA(CPU/自定义指标)与 Cluster Autoscaler 实现按需伸缩,提升资源利用率与稳定性。
- 镜像与拉取:使用 轻量镜像 与 多阶段构建;在节点上 预加载 pause 镜像,并配置 并行拉取 与 拉取超时,缩短 Pod 启动时间。
- 可观测性:部署 Prometheus + Grafana 监控节点与组件指标,使用 EFK/ELK 聚合日志,结合事件与链路追踪定位性能瓶颈。