-
合理设置资源请求(requests)和限制(limits)
- 为每个Pod定义准确的CPU/内存
requests和limits,避免资源争抢。例如:resources: requests: cpu: "100m" memory: "256Mi" limits: cpu: "500m" memory: "1Gi" - 使用工具(如kubectl top)监控资源使用,调整超配或低效的配置。
- 为每个Pod定义准确的CPU/内存
-
启用Horizontal Pod Autoscaler(HPA)
- 根据CPU/内存使用率自动扩缩Pod副本,例如配置HPA目标利用率(targetUtilization)为70%,避免节点过载。
-
设置ResourceQuota约束命名空间资源
- 通过
ResourceQuota限制命名空间的资源总量,防止单个团队过度占用资源:apiVersion: v1 kind: ResourceQuota metadata: name: team-quota spec: hard: requests.cpu: "10" requests.memory: 20Gi limits.cpu: "20" limits.memory: 40Gi
- 通过
-
配置LimitRange设置默认值
- 使用
LimitRange为未显式声明资源的Pod提供默认限制,避免资源黑洞:apiVersion: v1 kind: LimitRange metadata: name: default-limits spec: limits: - defaultRequest: cpu: "100m" memory: "256Mi" default: cpu: "500m" memory: "1Gi"
- 使用
-
节点资源预留与驱逐策略
- 通过
kubelet参数预留资源(如--kube-reserved、--system-reserved),防止节点关键进程(如kubelet)因资源不足崩溃。 - 配置
evictionHard(如内存不足时主动驱逐低优先级Pod)。
- 通过
-
监控与告警
- 部署Prometheus+Grafana监控集群资源水位,设置阈值告警(如节点CPU>85%持续5分钟)。
-
定期审计与优化
- 使用
kubectl describe node和kubectl top pod分析资源分配/使用偏差,优化僵尸Pod或过量配置。
- 使用
效果:减少OOM Killer触发频率,降低节点不可用风险,提升应用SLA稳定性。