Kubernetes(K8s)在CentOS上的性能调优需从硬件资源、系统内核、K8s组件、网络、存储、应用层及监控等多维度综合优化,以下是具体技巧:
kubectl top nodes监控资源使用率,避免资源瓶颈。ResourceQuotas限制命名空间资源总量,为Pod设置requests(最低保障)和limits(上限),防止资源争用。vm.max_map_count=262144:增加虚拟内存映射区域数量,支持更多容器(如Elasticsearch)。vm.swappiness=10(默认60):降低交换空间使用,优先使用物理内存,提升IO性能。vm.overcommit_memory=1:允许内核过度分配内存,提高内存利用率。net.ipv4.ip_forward=1:启用IP转发,支持Pod跨节点通信。net.core.rmem_max=16777216/net.core.wmem_max=16777216:增大接收/发送缓冲区,提升网络吞吐量。net.ipv4.tcp_max_syn_backlog=8192:增加SYN队列长度,应对高并发连接请求。net.netfilter.nf_conntrack_max=1048576:增大连接跟踪表大小,避免连接数过多导致丢包。fs.file-max=1000000:增加系统最大文件句柄数,支持更多并发文件操作。fs.inotify.max_user_instances=524288/fs.inotify.max_user_watches=524288:允许更多inotify实例和监视文件,适配容器化应用的高文件监控需求。--max-pods=200(默认110):增加单节点可运行的Pod数量,提升节点资源利用率。--image-gc-high-threshold=85/--image-gc-low-threshold=80:设置镜像垃圾回收阈值,自动清理未使用的镜像,释放磁盘空间。--eviction-hard=memory.available<500Mi,nodefs.available<10%:配置节点驱逐策略,避免节点资源耗尽导致Pod崩溃。--proxy-mode=ipvs):相比iptables,IPVS在大规模集群(>1000 Pod)中性能更优(如连接跟踪、负载均衡效率更高),需调整--conntrack-max(如100万)和--conntrack-tcp-timeout-established=24h优化连接跟踪。--max-requests-inflight=1000/--max-mutating-requests-inflight=200:增加并发请求数,提升API Server处理能力,避免高负载下拒绝请求。--horizontal-pod-autoscaler-sync-period=30s),减少HPA同步频率,降低控制平面负载。NetworkPolicy限制Pod间通信,仅开放必要端口,减少不必要的网络流量。ssd、hdd),动态分配存储资源(如kubectl apply -f storageclass.yaml)。ReclaimPolicy=Delete(或Recycle)自动回收存储资源,启用存储压缩(如Ceph的compression功能)提升IO性能。FROM golang:1.21 AS builder→FROM alpine:3.18)减小镜像大小(如从几GB降至几百MB),清理不必要的文件(如apt cache、npm cache),使用轻量级基础镜像(如Alpine Linux)。resources.requests(如cpu: "500m"、memory: "512Mi")和limits(如cpu: "1"、memory: "1Gi"),避免单个Pod占用过多资源,影响其他Pod运行。Horizontal Pod Autoscaler根据CPU/内存使用率(或自定义指标,如QPS)自动调整Pod数量(如kubectl autoscale deployment nginx --cpu-percent=80 --min=2 --max=10),应对高并发负载。etcd_server_has_leader=false)及时发现问题。INFO而非DEBUG),减少不必要的日志输出,降低磁盘IO压力。firewalld、SELinux,临时关闭用systemctl stop firewalld,永久关闭修改配置文件),减少系统开销。以上技巧需根据集群规模(如节点数、Pod数)、业务场景(如计算密集型、IO密集型)和硬件环境(如CPU型号、网络带宽)灵活调整,建议通过kubectl top、Prometheus等工具监控优化效果,持续迭代。