关于 gke-scaling
面向 GKE 工作负载扩缩容的操作指南,涵盖 HPA、VPA 与节点自动配置,并说明黄金路径默认值和资源优化流程。
主要功能
- 01配置 HPA 与 VPA
- 02使用节点自动配置
- 03查看 VPA 资源建议
- 04按黄金路径设置扩缩容
- 05执行工作负载资源优化
适用场景
- 01为 Deployment 配置 HPA
- 02检查并调整 CPU 与内存请求
- 03根据负载自动增减节点
- 04优化 GKE 工作负载资源用量
MCP 相关
指南列出用于查询、描述和修改 Kubernetes 资源及 GKE 集群、节点池的 MCP 工具。可通过 MCP 应用清单、读取 VPA 建议并更新集群配置;手动扩缩容和快速 HPA 设置需使用 kubectl。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ google/ skills --skill gke-scaling安装后在 Claude Code 中输入/gke-scaling确认已加载。
附带文件assets/hpa-example.yamlassets/vpa-example.yaml
详细介绍
GKE 工作负载扩缩容
本参考介绍如何在 GKE 上扩缩容工作负载。黄金路径默认启用 VPA、OPTIMIZE_UTILIZATION 自动扩缩容配置文件和节点自动配置。
MCP 工具:
get_k8s_resource、describe_k8s_resource、apply_k8s_manifest、patch_k8s_resource、get_cluster、update_cluster、update_node_pool
黄金路径扩缩容默认设置
| 设置 | 黄金路径值 | 备注 |
|---|---|---|
autoscaling.autoscalingProfile | OPTIMIZE_UTILIZATION | 激进缩容以节省成本 |
verticalPodAutoscaling.enabled | true | 可获取 VPA 建议 |
autoscaling.enableNodeAutoprovisioning | true | NAP 可按需创建节点池 |
| GPU 资源限制(T4、A100) | 1000000000 each | NAP 可配置 GPU 节点 |
扩缩容机制
1. 手动扩缩容
仅限 kubectl —
kubectl scale没有对应的 MCP 工具。请直接使用 kubectl。
kubectl scale deployment <DEPLOYMENT> --replicas=<N> -n <NAMESPACE>
2. 水平 Pod 自动扩缩容(HPA)
根据指标扩缩 Pod 数量。
快速设置(仅限 kubectl — kubectl autoscale 没有对应的 MCP 工具):
kubectl autoscale deployment <DEPLOYMENT> --cpu-percent=50 --min=1 --max=10
清单方式(推荐 — 使用 MCP apply_k8s_manifest):
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: <DEPLOYMENT>-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: <DEPLOYMENT>
minReplicas: 1
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 50
3. 垂直 Pod 自动扩缩容(VPA)
调整 CPU 和内存请求,使其符合实际用量。黄金路径默认启用。
更新模式:
Off— 仅提供建议(最安全,从这里开始)Initial— 仅在创建 Pod 时设置资源Auto— 重启 Pod 以应用新的资源值InPlaceOrRecreate— 尽可能不重启即可更新资源(GKE 1.34+)
以建议模式创建 VPA:
apiVersion: autoscaling.k8s.io/v1
kind: VerticalPodAutoscaler
metadata:
name: <DEPLOYMENT>-vpa
spec:
targetRef:
apiVersion: apps/v1
kind: Deployment
name: <DEPLOYMENT>
updatePolicy:
updateMode: "Off"
读取建议(优先使用 MCP describe_k8s_resource):
# MCP (preferred)
describe_k8s_resource(parent="...", resourceType="verticalpodautoscaler", name="<DEPLOYMENT>-vpa", namespace="<NAMESPACE>")
# kubectl fallback
kubectl get vpa <DEPLOYMENT>-vpa -o jsonpath='{.status.recommendation}'
完整模板见 assets/vpa-example.yaml。
4. 集群自动扩缩容器/节点自动配置(NAP)
在 Autopilot(黄金路径)上,节点扩缩容由系统全面管理。NAP 会根据工作负载需求自动创建节点池并调整其规模。
对于 Standard 集群:
# Enable cluster autoscaler on a node pool
gcloud container clusters update <CLUSTER_NAME> --region <REGION> \
--enable-autoscaling --node-pool <POOL_NAME> \
--min-nodes <MIN> --max-nodes <MAX> \
--quiet
# Enable NAP
gcloud container clusters update <CLUSTER_NAME> --region <REGION> \
--enable-autoprovisioning \
--min-cpu <MIN_CPU> --max-cpu <MAX_CPU> \
--min-memory <MIN_MEM> --max-memory <MAX_MEM> \
--quiet
自动扩缩容配置文件:
| 配置文件 | 行为 | 黄金路径? |
|---|---|---|
BALANCED | GKE 默认;保守缩容 | 否 |
OPTIMIZE_UTILIZATION | 激进缩容;减少闲置 | 是 |
| : : 资源 : : |
最佳实践
- 定义资源请求:HPA 和 VPA 依赖准确的请求值。务必设置这些值。
- 避免指标冲突:不要在同一指标上同时使用 HPA 和 VPA。常见做法:HPA 使用 CPU,VPA 使用内存。
- Pod 中断预算:为所有生产工作负载定义 PDB,确保扩缩容期间的可用性。
- HPA 稳定窗口:HPA 默认稳定窗口为 5 分钟。如需更快响应,可调整
behavior。 - 谨慎使用 VPA「Auto」模式:该模式会重启 Pod。请确保应用能够妥善处理 SIGTERM。默认情况下,VPA 在驱逐 Pod 时要求至少有 2 个副本。
- 使用 ComputeClasses:如需针对特定工作负载选择节点(Spot 回退、GPU、特定机器系列),请使用 ComputeClasses,而不要使用节点选择器。
资源配置优化工作流
- 以
Off模式部署 VPA,运行 24 小时以上 - 查看建议:
kubectl describe vpa <NAME> - 将
target值与当前的requests进行比较 - 应用时留出 20% 的缓冲:
new_request = target * 1.2 - 使用补丁格式更新 Deployment
| 条件 | 建议 | 风险 |
|---|---|---|
| CPU request >5x P95 actual | 降至 P95 * 1.2 | 中 |
| Memory request >3x P95 actual | 降至 P95 * 1.2 | 中 |
| CPU request >2x P95 actual | 留出 20% 缓冲进行资源配置优化 | 低 |
| 未设置资源限制 | 添加限制以防止嘈杂邻居问题 | 低 |