mcpField
G
gke-workload-scaling

gke-workload-scaling

github.com/googlecloudplatform云与 DevOps16948 次安装3 天前更新
代码仓库

关于 gke-workload-scaling

面向 GKE 运维人员的工作流指南,涵盖手动扩缩容、HPA、VPA 与集群自动扩缩容,并提供配置示例和操作建议。

主要功能

  1. 01手动调整 Deployment 副本数
  2. 02按指标配置 HPA
  3. 03按资源使用量配置 VPA
  4. 04启用节点池自动扩缩容
  5. 05提供扩缩容最佳实践

适用场景

  1. 01临时增加 Deployment 副本
  2. 02依据 CPU 或外部指标自动扩容
  3. 03根据实际用量调整 Pod 资源
  4. 04规划扩缩容期间的可用性

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/googlecloudplatform/gke-mcp --skill gke-workload-scaling

安装后在 Claude Code 中输入/gke-workload-scaling确认已加载。

附带文件assets/hpa-example.yamlassets/vpa-example.yaml

详细介绍

GKE 工作负载扩缩容

此技能提供在 Google Kubernetes Engine(GKE)上扩缩应用的工作流和最佳实践,涵盖手动扩缩、Horizontal Pod Autoscaling(HPA)和 Vertical Pod Autoscaling(VPA)。

工作流

1. 手动扩缩

快速将部署扩缩到固定的副本数。适用于需要立即手动干预或进行测试的场景。

命令:

kubectl scale deployment <deployment-name> --replicas=<number> -n <namespace>
2. Horizontal Pod Autoscaling(HPA)

根据观测到的 CPU 利用率、内存利用率或自定义指标,自动调整 Pod 数量。

前提条件:

  • Metrics Server 必须处于运行状态(在 GKE 上默认启用)。
  • 容器必须明确定义资源请求和限制。

快速命令:

kubectl autoscale deployment <deployment-name> --cpu-percent=50 --min=1 --max=10

清单方式(推荐): 使用 YAML 清单进行版本控制配置。 请参阅 assets/hpa-example.yaml 获取模板。

kubectl apply -f assets/hpa-example.yaml

自定义指标和外部指标: 对于 GKE,基于 Cloud Monitoring 指标(例如 Pub/Sub 队列长度)进行扩缩容时,现代且推荐的方式是使用 External 指标类型。GKE 控制平面原生支持此方式,无需 Custom Metrics Adapter。对于通过 Prometheus 暴露的应用专属指标,可以使用 Google Cloud Managed Service for Prometheus 或 Prometheus Adapter。

3. Vertical Pod Autoscaling(VPA)

自动调整 Pod 的 CPU 和内存预留量,使其与实际用量相符。这对于为工作负载合理配置资源至关重要。

前提条件:

  • 必须在集群上启用 VPA。
    • Autopilot: 默认启用。
    • Standard: 必须手动启用。

在 Standard 集群上启用 VPA:

gcloud container clusters update <cluster-name> --enable-vertical-pod-autoscaling --zone <zone>

更新模式:

  • Off:计算建议,但不应用。适用于“试运行”分析。
  • Initial:仅在创建 Pod 时分配资源。
  • Auto:如果建议与请求的差异较大,则通过重启运行中的 Pod 来更新资源。
  • InPlaceOrRecreate:尝试在不重新创建 Pod 的情况下更新 Pod 资源。如果无法原地更新,则回退到 Auto 模式(需要 GKE 1.34+)。

示例: 请参阅 assets/vpa-example.yaml 获取配置模板。

4. Cluster Autoscaler

虽然 Cluster Autoscaler 并非工作负载级别的扩缩器,但它对于确保集群有足够的节点来运行扩缩后的 Pod 至关重要。

在节点池上启用:

gcloud container clusters update <cluster-name> \
    --enable-autoscaling \
    --node-pool <node-pool-name> \
    --min-nodes <min> \
    --max-nodes <max> \
    --zone <zone>

最佳实践

  1. 定义资源请求: HPA 和 VPA 依赖准确的资源请求。务必在容器规格中定义这些请求。
  2. 避免指标冲突: 不要将 HPA 和 VPA 配置为使用相同的指标(例如,两者都使用 CPU)。这会导致频繁波动。
    • 典型模式: HPA 使用 CPU,VPA 使用内存。
  3. Pod Disruption Budget(PDB): 定义 PDB,确保在扩缩容事件或节点升级期间应用保持可用。
  4. HPA 延迟: HPA 设有稳定窗口(默认为 5 分钟),以防止快速波动。
  5. VPA“Auto”模式的风险: 在“Auto”模式下,VPA 会重启 Pod 以更改资源。请确保应用能够妥善处理重启(例如,处理 SIGTERM)。
    • 注意: 默认情况下,VPA 至少需要 2 个副本才能执行驱逐。在 GKE 1.22+ 中,可以通过在 PodUpdatePolicy 中设置 minReplicas 覆盖此要求。

评论

支持 Markdown