centos部署k8s性能如何提升
导读:CentOS 上部署 Kubernetes 的性能提升清单 一 基础环境与内核先行 升级内核与系统:在 CentOS 7.9 上,Kubernetes 1.28+(尤其是 1.31) 在 3.10 内核上易出现网络与连接跟踪性能问题。建议...
CentOS 上部署 Kubernetes 的性能提升清单
一 基础环境与内核先行
- 升级内核与系统:在 CentOS 7.9 上,Kubernetes 1.28+(尤其是 1.31) 在 3.10 内核上易出现网络与连接跟踪性能问题。建议升级到 Kernel 5.4+(ELRepo) 或迁移到 Rocky Linux 9/AlmaLinux 9/Ubuntu 22.04 等更新内核的系统,可显著改善 IPVS、eBPF、VXLAN、conntrack 等路径的性能与稳定性。
- 关闭 Swap:临时执行
swapoff -a,并注释 /etc/fstab 中的 swap 行,避免内存换页影响延迟与稳定性。 - 加载桥接与转发:启用
br_netfilter并设置net.bridge.bridge-nf-call-iptables=1、net.bridge.bridge-nf-call-ip6tables=1、net.ipv4.ip_forward=1,确保容器桥接流量可被 iptables/ip6tables 正确过滤与转发。 - 文件句柄与 inotify:提升系统容量,建议
fs.file-max=1000000、fs.inotify.max_user_instances=524288、fs.inotify.max_user_watches=524288,避免高并发场景的文件/事件描述符瓶颈。 - ARP 与网络队列:扩大邻居表与网卡队列,建议
net.ipv4.neigh.default.gc_thresh1=1024、gc_thresh2=4096、gc_thresh3=8192,net.core.netdev_max_backlog=16384,降低大规模节点/连接下的丢包与抖动。 - 连接跟踪与端口:提升 conntrack 能力并设置合理超时,建议
net.netfilter.nf_conntrack_max=10485760、net.netfilter.nf_conntrack_tcp_timeout_established=300、net.netfilter.nf_conntrack_buckets=655360,net.ipv4.ip_local_port_range=45001 65000,缓解高并发短连接场景的 conntrack 瓶颈。
二 网络与 kube-proxy 优化
- 优先使用 IPVS:为
kube-proxy启用 IPVS 模式(需预加载ip_vs系列模块),在高并发短连接/大量 Service 场景下较 iptables 有显著性能优势。 - 调优 conntrack:结合业务调大
net.netfilter.nf_conntrack_max与nf_conntrack_tcp_timeout_established,减少 conntrack 表项回收导致的丢包与性能抖动。 - 减少五元组转换:尽量使用 ClusterIP/Headless Service + Ingress/LB 承载南北向流量,降低 NodePort 带来的端口映射与 conntrack 压力。
- 选择高性能 CNI:在支持 eBPF 的内核上优先 Cilium(eBPF 加速、更少 iptables 规则);Overlay(如 VXLAN)在旧内核上开销较大,升级内核或使用 BGP/路由模式 可降低封装成本。
- 调大套接字缓冲:提升
net.core.rmem_max、net.core.wmem_max,优化大流量传输与高并发场景的 TCP 收发缓冲。
三 控制平面组件与 etcd 调优
- API Server:根据集群规模调大并发请求上限,建议提高
--max-requests-inflight与--max-mutating-requests-inflight,避免高峰期排队与超时。 - Controller/Scheduler:启用 leader election 保证高可用,并限制与 API Server 的 QPS/Burst,防止控制面过载。
- etcd:部署 3/5 节点 高可用集群并优先使用 SSD;适当增大后端配额(如
--quota-backend-bytes=8589934592即 8GB),并提升 对等网络流量优先级,降低 leader/follower 之间的心跳与复制延迟。
四 存储与容器运行时优化
- 存储后端与调度:为数据库/日志/有状态应用选择 高 IOPS/低时延 的存储(如 NVMe SSD、Ceph RBD 等),并通过 StorageClass 区分性能等级;为时延敏感负载设置 拓扑分散/亲和 与 Pod 反亲和,减少热点。
- 节点 I/O 调度:对 SSD/NVMe 建议 noop/deadline 调度器,减少不必要的电梯算法开销。
- 镜像与拉取:配置 镜像仓库镜像加速,开启 并行拉取;为
containerd/docker设置合理的日志轮转(如max-size=100m),避免磁盘被日志撑满。 - 运行时与 kubelet:使用 systemd 作为 cgroup 驱动(
native.cgroupdriver=systemd),按需调整 kubelet 并发度、镜像拉取超时、单节点最大 Pod 数,提升节点就绪与应用启动速度。
五 快速检查与落地顺序
- 基线压测与观测:在优化前后使用
iperf3做节点间带宽/抖动基线,配合 Prometheus + Grafana 观察 P99 延迟、TCP retrans、conntrack 使用率、API Server 延迟/排队 等关键指标,验证优化成效。 - 建议顺序:
- 升级内核/系统并重启;2) 关闭 Swap、加载
br_netfilter与基础 sysctl; - 启用 IPVS 与合适的 CNI(如 Cilium/BGP);
- 调大 conntrack/文件句柄/网络队列;
- 优化 API Server/etcd/控制面组件参数;
- 调整存储 I/O 调度与镜像拉取策略;
- 回归压测与容量评估,按指标逐步微调。
- 升级内核/系统并重启;2) 关闭 Swap、加载
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos部署k8s性能如何提升
本文地址: https://pptw.com/jishu/781389.html
