Debian上K8s性能调优技巧
/etc/sysctl.conf
(或/etc/sysctl.d/k8s-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等待超时)、net.ipv4.ip_local_port_range = 1024 65535
(本地端口范围)、vm.swappiness = 10
(减少交换分区使用)。修改后执行sysctl -p
使配置生效。net.bridge.bridge-nf-call-ip6tables = 1
、net.bridge.bridge-nf-call-iptables = 1
参数,确保Kubernetes网络插件(如Calico)正常工作。/etc/default/kubelet
或/var/lib/kubelet/config.yaml
),增加--concurrent-endpoints=1000
(并发处理端点数量)、--max-pods=110
(单节点最大Pod数);调整镜像垃圾回收阈值--image-gc-high-threshold=85
(触发GC的高水位线)、--image-gc-low-threshold=80
(GC完成后的低水位线),避免磁盘空间耗尽。ip_vs
、ip_vs_rr
等内核模块),替代默认的iptables模式,提升大规模集群的网络负载均衡性能;调整--conntrack-max=131072
(连接跟踪表大小)、--conntrack-tcp-timeout=3600
(TCP连接跟踪超时),避免连接跟踪表溢出。--request-cpu=2
、--request-memory=4Gi
)和限制(如--limit-cpu=4
、--limit-memory=8Gi
);调整--max-requests-inflight=1000
(并发请求数)、--max-mutating-requests-inflight=500
(并发变更请求数),提高API处理能力。proxy . 5s
),减少DNS查询延迟,提升服务访问速度。ssd
、hdd
),实现存储资源的自动选择;设置ReclaimPolicy=Delete
(删除PV时同时删除底层存储)或Retain
(保留底层存储),根据数据安全性需求调整。resources.requests
(如cpu: "500m"
、memory: "512Mi"
)和resources.limits
(如cpu: "1"
、memory: "1Gi"
),避免资源争用和OOM(Out of Memory)问题。nodeAffinity
(如requiredDuringSchedulingIgnoredDuringExecution
)将Pod调度到指定节点(如GPU节点),或使用podAntiAffinity
(如requiredDuringSchedulingIgnoredDuringExecution
)将同一服务的Pod分散到不同节点,提高负载均衡和服务可用性。targetCPUUtilizationPercentage=80
)或自定义指标(如QPS)动态调整Pod副本数量,适应负载变化。INFO
而非DEBUG
),减少不必要的日志输出,降低磁盘I/O压力。kubectl delete pod --field-selector=status.phase==Failed
删除失败Pod);更新Kubernetes及相关组件(如containerd、CNI插件)到最新稳定版本,获取性能改进和安全修复。