温馨提示×

centos部署k8s性能如何提升

小樊
42
2025-12-25 15:14:40
栏目: 智能运维

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=1net.bridge.bridge-nf-call-ip6tables=1net.ipv4.ip_forward=1,确保容器桥接流量可被 iptables/ip6tables 正确过滤与转发。
  • 文件句柄与 inotify:提升系统容量,建议 fs.file-max=1000000fs.inotify.max_user_instances=524288fs.inotify.max_user_watches=524288,避免高并发场景的文件/事件描述符瓶颈。
  • ARP 与网络队列:扩大邻居表与网卡队列,建议 net.ipv4.neigh.default.gc_thresh1=1024gc_thresh2=4096gc_thresh3=8192net.core.netdev_max_backlog=16384,降低大规模节点/连接下的丢包与抖动。
  • 连接跟踪与端口:提升 conntrack 能力并设置合理超时,建议 net.netfilter.nf_conntrack_max=10485760net.netfilter.nf_conntrack_tcp_timeout_established=300net.netfilter.nf_conntrack_buckets=655360net.ipv4.ip_local_port_range=45001 65000,缓解高并发短连接场景的 conntrack 瓶颈。

二 网络与 kube-proxy 优化

  • 优先使用 IPVS:为 kube-proxy 启用 IPVS 模式(需预加载 ip_vs 系列模块),在高并发短连接/大量 Service 场景下较 iptables 有显著性能优势。
  • 调优 conntrack:结合业务调大 net.netfilter.nf_conntrack_maxnf_conntrack_tcp_timeout_established,减少 conntrack 表项回收导致的丢包与性能抖动。
  • 减少五元组转换:尽量使用 ClusterIP/Headless Service + Ingress/LB 承载南北向流量,降低 NodePort 带来的端口映射与 conntrack 压力。
  • 选择高性能 CNI:在支持 eBPF 的内核上优先 Cilium(eBPF 加速、更少 iptables 规则);Overlay(如 VXLAN)在旧内核上开销较大,升级内核或使用 BGP/路由模式 可降低封装成本。
  • 调大套接字缓冲:提升 net.core.rmem_maxnet.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=85899345928GB),并提升 对等网络流量优先级,降低 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 延迟/排队 等关键指标,验证优化成效。
  • 建议顺序:
    1. 升级内核/系统并重启;2) 关闭 Swap、加载 br_netfilter 与基础 sysctl;
    2. 启用 IPVS 与合适的 CNI(如 Cilium/BGP);
    3. 调大 conntrack/文件句柄/网络队列;
    4. 优化 API Server/etcd/控制面组件参数;
    5. 调整存储 I/O 调度与镜像拉取策略;
    6. 回归压测与容量评估,按指标逐步微调。

0