mcpField
G
gke-scaling

gke-scaling

github.com/google云与 DevOps21.6k968 次安装今天更新
代码仓库

关于 gke-scaling

面向 GKE 工作负载扩缩容的操作指南,涵盖 HPA、VPA 与节点自动配置,并说明黄金路径默认值和资源优化流程。

主要功能

  1. 01配置 HPA 与 VPA
  2. 02使用节点自动配置
  3. 03查看 VPA 资源建议
  4. 04按黄金路径设置扩缩容
  5. 05执行工作负载资源优化

适用场景

  1. 01为 Deployment 配置 HPA
  2. 02检查并调整 CPU 与内存请求
  3. 03根据负载自动增减节点
  4. 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.autoscalingProfileOPTIMIZE_UTILIZATION激进缩容以节省成本
verticalPodAutoscaling.enabledtrue可获取 VPA 建议
autoscaling.enableNodeAutoprovisioningtrueNAP 可按需创建节点池
GPU 资源限制(T4、A100)1000000000 eachNAP 可配置 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):

模板见 assets/hpa-example.yaml。

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

自动扩缩容配置文件:

配置文件行为黄金路径?
BALANCEDGKE 默认;保守缩容否
OPTIMIZE_UTILIZATION激进缩容;减少闲置是
: : 资源 : :

最佳实践

  1. 定义资源请求:HPA 和 VPA 依赖准确的请求值。务必设置这些值。
  2. 避免指标冲突:不要在同一指标上同时使用 HPA 和 VPA。常见做法:HPA 使用 CPU,VPA 使用内存。
  3. Pod 中断预算:为所有生产工作负载定义 PDB,确保扩缩容期间的可用性。
  4. HPA 稳定窗口:HPA 默认稳定窗口为 5 分钟。如需更快响应,可调整 behavior。
  5. 谨慎使用 VPA「Auto」模式:该模式会重启 Pod。请确保应用能够妥善处理 SIGTERM。默认情况下,VPA 在驱逐 Pod 时要求至少有 2 个副本。
  6. 使用 ComputeClasses:如需针对特定工作负载选择节点(Spot 回退、GPU、特定机器系列),请使用 ComputeClasses,而不要使用节点选择器。

资源配置优化工作流

  1. 以 Off 模式部署 VPA,运行 24 小时以上
  2. 查看建议:kubectl describe vpa <NAME>
  3. 将 target 值与当前的 requests 进行比较
  4. 应用时留出 20% 的缓冲:new_request = target * 1.2
  5. 使用补丁格式更新 Deployment
条件建议风险
CPU request >5x P95 actual降至 P95 * 1.2中
Memory request >3x P95 actual降至 P95 * 1.2中
CPU request >2x P95 actual留出 20% 缓冲进行资源配置优化低
未设置资源限制添加限制以防止嘈杂邻居问题低

评论

支持 Markdown