Debian上K8S部署性能调优策略
sudo swapoff -a关闭当前Swap,修改/etc/fstab文件注释掉Swap相关行,永久禁用。调整系统内核参数以提升网络、内存等资源的处理效率。编辑/etc/sysctl.conf文件,添加或修改以下关键参数:
net.core.somaxconn=65535(扩大监听队列长度,避免连接拒绝)、net.ipv4.tcp_max_syn_backlog=65535(增加SYN队列大小,应对高并发连接请求)、net.ipv4.tcp_tw_reuse=1(复用TIME_WAIT状态的连接,减少资源占用)、net.ipv4.tcp_fin_timeout=30(缩短FIN_WAIT_2状态的超时时间,加快连接释放);vm.swappiness=10(降低系统使用Swap的倾向,优先使用物理内存);net.ipv4.ip_local_port_range=1024 65535(扩大客户端可用的临时端口范围,支持更多并发外发连接)。sudo sysctl -p使配置生效。--max-pods参数增加节点可运行的Pod数量(默认110,可根据节点资源适当提升,如150);--image-gc-high-threshold=85(镜像磁盘使用率达85%时触发回收)、--image-gc-low-threshold=70(回收至70%,避免频繁GC影响性能);--container-runtime=remote配合--container-runtime-endpoint=unix:///run/containerd/containerd.sock(提升容器运行时交互效率)。--proxy-mode=ipvs)替代默认的iptables模式(IPVS采用哈希表实现,大规模集群下转发效率更高);--conntrack-max=1000000(扩大连接跟踪表大小,避免高并发下连接跟踪失败)、--conntrack-tcp-timeout-established=3600(延长已建立连接的跟踪超时时间,减少无效回收)。--max-requests-inflight=3000(同一时间处理的非变更请求数,默认200)、--max-mutating-requests-inflight=1000(同一时间处理的变更请求数,默认400),避免请求堆积导致API Server阻塞;--watch-cache-sizes=node=1000,pod=5000(调大Node、Pod资源的Watch缓存大小,减少对etcd的直接访问,提升查询效率);--kube-api-qps=100(每秒向API Server发送的请求数,默认50)、--kube-api-burst=150(突发请求数,默认30),避免因API Server限流导致调度或控制延迟。proxy插件(proxy . /etc/resolv.conf),减少DNS查询延迟(默认缓存时间为5秒,可根据需求调整)。ssd、hdd),通过volumeBindingMode: WaitForFirstConsumer延迟绑定PVC,实现存储资源的合理分配。resources.requests(Pod启动所需的最小资源)和resources.limits(Pod能使用的最大资源),避免资源争用(如CPU饥饿)或OOM(内存溢出);nodeAffinity将Pod调度到特定节点(如需要GPU的Pod调度到带GPU的节点),使用podAntiAffinity将同一应用的Pod分散到不同节点(提高可用性);topologySpreadConstraints实现Pod在Zone、Node等维度的均衡分布(如maxSkew=1,确保每个Zone的Pod数量差异不超过1);kubectl autoscale deployment myapp --cpu-percent=50 --min=2 --max=10),匹配负载变化。kube-bench(检查集群安全性)、kube-hunter(模拟攻击)、locust(模拟用户负载)进行性能测试,根据测试结果调整配置。