Debian系统上优化Kubernetes性能的关键策略
sudo swapoff -a
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
resources.requests(资源请求)和resources.limits(资源限制),避免Pod间资源争抢或节点过载(如内存溢出导致OOM Killer终止Pod)。/etc/sysctl.conf或创建/etc/sysctl.d/k8s-sysctl.conf,添加以下参数以提升网络性能:net.core.somaxconn = 65535 # 增大监听队列长度,避免连接被拒绝
net.ipv4.tcp_max_syn_backlog = 65535 # 增大SYN队列长度,提升TCP连接建立效率
net.ipv4.tcp_tw_reuse = 1 # 允许重用TIME_WAIT状态的连接,减少连接建立时间
net.ipv4.ip_local_port_range = 1024 65535 # 扩大源端口范围,支持更多并发连接
vm.swappiness = 10 # 降低交换空间使用倾向,优先使用物理内存
执行sudo sysctl -p使配置生效。/etc/systemd/system/kubelet.service.d/10-kubeadm.conf),调整以下参数:--max-pods=200 # 增加单个节点可运行的Pod数量(默认110,根据节点资源调整)
--image-gc-high-threshold=85 # 镜像垃圾回收的高水位线(默认85%,可适当提高)
--image-gc-low-threshold=70 # 镜像垃圾回收的低水位线(默认80%,减少镜像占用的存储空间)
执行sudo systemctl daemon-reload && sudo systemctl restart kubelet使配置生效。iptables模式改为ipvs模式(更适合大规模集群),提升负载均衡性能。执行以下命令:sudo apt install -y ipset ipvsadm
cat <<EOF > /etc/modules-load.d/ipvs.conf
ip_vs
ip_vs_rr
ip_vs_wrr
ip_vs_sh
nf_conntrack
EOF
sudo modprobe -a $(cat /etc/modules-load.d/ipvs.conf | awk '{print $1}')
修改kube-proxy配置(/var/lib/kubelet/config.yaml),添加mode: "ipvs",重启kube-proxy服务。kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
coredns-cache.yaml文件:apiVersion: v1
kind: ConfigMap
metadata:
name: coredns
namespace: kube-system
data:
Corefile: |
.:53 {
errors
cache 30 # 缓存时间为30秒
forward . /etc/resolv.conf
loop
reload
loadbalance
}
应用配置:kubectl apply -f coredns-cache.yaml。--data-dir(指向SSD目录)、--snapshot-count(快照频率,默认10万次,可根据数据量调整)等参数,在数据安全性和性能之间取得平衡。nodeAffinity(节点亲和性)将Pod调度到特定节点(如GPU节点),通过podAntiAffinity(Pod反亲和性)将同一应用的Pod分散到不同节点,提升负载均衡和服务可用性。