-
分析资源使用情况:
- 使用
kubectl top pods --namespace=<NAMESPACE>
查看Pod的CPU/内存实时使用情况。 - 通过
kubectl describe nodes
检查节点资源分配状态,观察是否存在节点资源不足或分配倾斜。
- 使用
-
检查资源配置限制:
- 查看Pod的YAML定义,确认
requests
和limits
是否合理(如设置过高或过低)。 - 使用
kubectl get pod <POD_NAME> -o yaml
提取资源配置,对比实际使用数据进行调整。
- 查看Pod的YAML定义,确认
-
优化调度策略:
- 使用节点亲和性(nodeAffinity)或反亲和性(antiAffinity)控制Pod分布。
- 通过
kubectl taint
设置污点(Taints)阻止不匹配的Pod调度到超负荷节点。
-
配置Horizontal Pod Autoscaler(HPA):
- 为Deployment/StatefulSet配置HPA,根据资源使用率自动扩缩容Pod副本。
- 示例命令:
kubectl autoscale deployment <DEPLOYMENT_NAME> --cpu-percent=80 --min=2 --max=5
-
排查资源竞争与异常:
- 通过
kubectl logs
或集群监控工具(如Prometheus+Grafana)分析Pod日志,识别频繁OOM(内存溢出)或CPU争抢问题。 - 对资源消耗异常的应用进行优化(如调整JVM参数、代码逻辑)。
- 通过
-
平衡节点负载:
- 手动驱逐超负荷节点上的Pod(
kubectl drain <NODE_NAME>
),触发重新调度。 - 启用Cluster Autoscaler,自动扩缩容节点数量。
- 手动驱逐超负荷节点上的Pod(
-
资源配额管理:
- 在Namespace级别设置ResourceQuota,限制资源总量,避免单个服务过度占用资源。
- 示例配置:定义CPU/memory的requests/limits配额约束。
工具推荐:
- 监控:Prometheus + Grafana、k9s、Lens
- 分析:kube-state-metrics、kube-resource-explorer