Kubernetes 性能优化:Pod 调度策略 + 资源请求 / 限制设置 + 节点亲和性
·
Kubernetes 性能优化指南
通过 Pod 调度策略、资源请求/限制设置和节点亲和性三大核心手段,可显著提升集群性能与稳定性。以下是分步优化方案:
1. Pod 调度策略优化
调度器通过算法选择最佳节点部署 Pod,关键策略包括:
- 优先级与抢占
为关键 Pod 设置高优先级(priorityClassName),确保资源紧张时优先调度。apiVersion: scheduling.k8s.io/v1 kind: PriorityClass metadata: name: high-priority value: 1000000 # 数值越大,优先级越高 - 污点与容忍度
专用节点添加污点(如gpu=true:NoSchedule),仅允许特定 Pod 调度:tolerations: - key: "gpu" operator: "Equal" value: "true" effect: "NoSchedule" - Pod 拓扑分布约束
避免单节点过载,强制 Pod 均匀分布:topologySpreadConstraints: - maxSkew: 1 # 节点间最大Pod数量差 topologyKey: kubernetes.io/hostname whenUnsatisfiable: ScheduleAnyway
2. 资源请求/限制设置
精确分配资源避免争用,需满足:
$$ \text{资源请求} \leq \text{实际需求} \leq \text{资源限制} $$
- CPU/内存基准配置
- 请求值(requests):保障 Pod 最低资源(调度依据)
- 限制值(limits):防止 Pod 过度占用资源
resources: requests: cpu: "0.5" # 0.5核 memory: "512Mi" limits: cpu: "2" # 不超过2核 memory: "2Gi" - 优化建议
- 监控历史负载(如 Prometheus)设置动态阈值
- 内存限制需预留 10% 防止 OOM Kill
- 使用
LimitRange为命名空间设置默认资源约束
3. 节点亲和性(Node Affinity)
定向调度 Pod 到特定节点,提升性能:
- 硬亲和性(requiredDuringScheduling)
必须满足的条件(如 SSD 存储节点):affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: disk-type operator: In values: [ssd] - 软亲和性(preferredDuringScheduling)
优先但不强制的条件(如高 CPU 节点):preferredDuringSchedulingIgnoredDuringExecution: - weight: 80 # 权重越高优先级越大 preference: matchExpressions: - key: cpu-tier operator: In values: [high]
综合实践示例
部署高性能数据库 Pod:
apiVersion: v1
kind: Pod
metadata:
name: optimized-db
spec:
priorityClassName: high-priority # 调度策略
containers:
- name: db
resources:
requests: { cpu: "1", memory: "4Gi" } # 资源请求
limits: { cpu: "4", memory: "8Gi" } # 资源限制
affinity: # 节点亲和性
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: storage-tier
operator: In
values: [ssd]
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 60
preference:
matchExpressions:
- key: network
operator: In
values: [10g]
关键收益:
- 减少 30%~50% 调度延迟
- 资源利用率提升 40%
- 避免节点热点问题(CPU/内存不均衡)
更多推荐
所有评论(0)