swapoff -a
并修改/etc/fstab
永久禁用),防止kubelet因交换空间使用导致性能下降。编辑/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.ip_local_port_range=1024 65535
(扩大客户端端口范围);vm.swappiness=10
(降低交换倾向,优先使用物理内存)、vm.overcommit_memory=1
(允许内核灵活处理内存过度分配)。sysctl -p
使配置生效。/etc/systemd/system/kubelet.service.d/10-kubeadm.conf
文件,调整以下参数:--max-pods=110
(增加单节点Pod数量,默认110已满足多数场景)、--image-gc-high-threshold=85
(镜像垃圾回收高水位线,释放无用镜像空间)、--image-gc-low-threshold=80
(低水位线,避免频繁回收);执行systemctl daemon-reload && systemctl restart kubelet
使更改生效。apt install -y ipset ipvsadm
安装依赖,创建/etc/modules-load.d/ipvs.conf
文件添加ip_vs ip_vs_rr ip_vs_wrr ip_vs_sh nf_conntrack
模块并加载,修改kube-proxy配置(--proxy-mode=ipvs
、--conntrack-max=1000000
、--conntrack-tcp-timeout=3600
)以提升连接跟踪性能。--max-requests-inflight=1000
(并发请求数)、--max-mutating-requests-inflight=500
(并发变更请求数),避免API Server成为瓶颈。kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
部署。apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ssd-storage
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
部署后,在PVC中指定storageClassName: ssd-storage
即可使用。resources.requests
(如memory: "64Mi"
、cpu: "250m"
)和resources.limits
(如memory: "128Mi"
、cpu: "500m"
),避免资源争用和OOM(Out of Memory)问题。apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: my-app-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: my-app
minReplicas: 2
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70
nodeAffinity
(节点亲和性)将关键Pod调度到高性能节点,podAntiAffinity
(Pod反亲和性)将同一应用的Pod分散到不同节点,提升容错性和资源利用率。kubectl delete pod --field-selector=status.phase==Failed
清理失败Pod)。