mcpField
G
gke-cluster-creator

gke-cluster-creator

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

关于 gke-cluster-creator

gke-cluster-creator 通过最佳实践模板和定制步骤,指导用户创建 GKE 集群,适用于需要选择集群类型与配置的团队。它提供标准区域、Autopilot 和 GPU 等模板,并通过 MCP 工具执行创建。

主要功能

  1. 01选择集群配置模板
  2. 02收集并验证必需参数
  3. 03按需调整集群配置
  4. 04调用工具创建 GKE 集群

适用场景

  1. 01为开发或测试创建区域集群
  2. 02配置高可用生产集群
  3. 03为 AI 推理选择 GPU 集群

MCP 相关

该技能调用 create_cluster MCP 工具创建 GKE 集群,并根据其参数模式校验最终配置。

安装

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

$npx skills add https://github.com/googlecloudplatform/gke-mcp --skill gke-cluster-creator

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

详细介绍

GKE 集群创建技能

此技能提供一组最佳实践模板,并引导用户完成自定义流程,帮助用户创建 Google Kubernetes Engine(GKE)集群。

核心行为

  1. 模板选择:
    • 如果用户尚未指定模板,则向用户展示可用模板。
    • 说明其中的权衡(例如,成本与可用性、Autopilot 与 Standard)。
  2. 自定义:
    • 选定模板后,展示默认配置(JSON/YAML)。
    • 询问用户提供必要的缺失信息:project_id、location、cluster_name。
    • 询问用户是否要修改可选字段(例如,machineType、nodeCount、network)。
  3. 验证:
    • 确保已设置 project_id、location 和 cluster_name。
    • 确保配置符合 create_cluster MCP 工具架构。
  4. 执行:
    • 使用最终配置调用 create_cluster MCP 工具。

最佳实践

在引导用户或生成配置时,请遵循以下 GKE 集群创建最佳实践:

安全性
  1. 私有集群:默认使用控制平面为私有且公共端点受限的私有集群,以尽可能缩小攻击面。
  2. VPC 原生网络:使用 VPC 原生集群以启用别名 IP 范围,从而支持 Pod 级防火墙规则并增强网络安全性。
  3. 工作负载身份:优先使用工作负载身份,为 GKE 工作负载安全地授予访问 Google Cloud 服务的权限,而不是使用静态服务账号密钥。
  4. Shielded GKE 节点:启用 Shielded GKE 节点,以防御 Rootkit 和启动工具包。
  5. 最小权限(RBAC):实施严格的基于角色的访问控制,向用户和工作负载授予最低限度的权限。
成本优化
  1. 自动扩缩:启用集群自动扩缩器和水平 Pod 自动扩缩器,根据需求调整资源。
  2. 合理配置规格:选择合适的机器类型和节点数。对于容错性强的非关键工作负载,可考虑使用 Spot VM。
高可用性与可靠性
  1. 区域集群:在生产环境中使用区域集群,确保控制平面跨多个可用区复制。(注意:标准区域集群默认会在 3 个可用区中创建节点。)
  2. Pod 中断预算:建议设置 Pod 中断预算,确保节点维护期间应用保持稳定。
  3. 发布渠道:订阅发布渠道(例如 Regular 或 Stable),以便自动、安全地升级集群。

模板

1. Standard 可用区集群(经济实惠的开发/测试)

适用于:开发、测试和非关键工作负载。

{
  "name": "projects/{PROJECT_ID}/locations/{ZONE}/clusters/{CLUSTER_NAME}",
  "initialNodeCount": 1,
  "nodeConfig": {
    "machineType": "e2-medium",
    "diskSizeGb": 50,
    "oauthScopes": [
      "https://www.googleapis.com/auth/devstorage.read_only",
      "https://www.googleapis.com/auth/logging.write",
      "https://www.googleapis.com/auth/monitoring",
      "https://www.googleapis.com/auth/service.management.readonly",
      "https://www.googleapis.com/auth/servicecontrol",
      "https://www.googleapis.com/auth/trace.append"
    ]
  }
}
2. Standard 区域集群(高可用性)

适用于:需要高可用性的生产工作负载。 注意:默认会创建 3 个节点(该区域的每个可用区各 1 个)。

{
  "name": "projects/{PROJECT_ID}/locations/{REGION}/clusters/{CLUSTER_NAME}",
  "initialNodeCount": 1,
  "nodeConfig": {
    "machineType": "e2-standard-4",
    "diskSizeGb": 100,
    "oauthScopes": ["https://www.googleapis.com/auth/cloud-platform"]
  }
}
3. Autopilot(免运维)

适用于:大多数不希望管理节点的工作负载。

{
  "name": "projects/{PROJECT_ID}/locations/{REGION}/clusters/{CLUSTER_NAME}",
  "autopilot": {
    "enabled": true
  }
}
4. GPU 推理(L4)

适用于:AI/ML 推理和小型模型服务。 注意:需要 g2-standard-4 配额。

{
  "name": "projects/{PROJECT_ID}/locations/{REGION}/clusters/{CLUSTER_NAME}",
  "initialNodeCount": 1,
  "nodeConfig": {
    "machineType": "g2-standard-4",
    "accelerators": [
      {
        "acceleratorCount": "1",
        "acceleratorType": "nvidia-l4"
      }
    ],
    "diskSizeGb": 100,
    "oauthScopes": ["https://www.googleapis.com/auth/cloud-platform"]
  }
}
5. AI 超级计算(A3 HighGPU)

适用于:大型模型训练/推理。 注意:成本较高,且配额要求严格。

{
  "name": "projects/{PROJECT_ID}/locations/{REGION}/clusters/{CLUSTER_NAME}",
  "initialNodeCount": 1,
  "nodeConfig": {
    "machineType": "a3-highgpu-8g",
    "accelerators": [
      {
        "acceleratorCount": "8",
        "acceleratorType": "nvidia-h100-80gb-hbm3"
      }
    ],
    "diskSizeGb": 200,
    "oauthScopes": ["https://www.googleapis.com/auth/cloud-platform"]
  }
}

指示

  • 如果上下文中没有 project_id,始终询问用户的 project_id。
  • 始终询问用户的 location(区域或可用区)。
  • 始终询问一个唯一的 cluster_name。
  • 确认用户是否需要 Access to Google Cloud APIs(对于现代 GKE,默认的 cloud-platform 范围通常是最佳选择)。
  • 如果用户选择 GPU 集群或区域级集群,提醒用户注意费用。
  • 使用 create_cluster MCP 工具创建集群。parent 参数为 projects/{PROJECT_ID}/locations/{LOCATION},cluster 参数为 JSON 对象。cluster.name 只需填写短名称(例如 "my-cluster")。
  • 重要:调用 create_cluster 时,cluster.name 应为短名称(例如 my-cluster),而不是完整的资源路径,因为 parent 参数已定义范围。

示例用法

用户:“我想创建一个 GKE 集群。” 模型:“我可以帮你创建。你需要哪种集群?

  1. 标准可用区级集群:适合开发和测试。
  2. 标准区域级集群:高可用性。
  3. Autopilot:完全托管。
  4. 启用 GPU 的集群:适用于 AI/ML 工作负载。”

用户:“请创建标准可用区级集群。” 模型:“好的。我需要一些信息:

  • 项目 ID
  • 可用区(例如,us-central1-a)
  • 集群名称”

用户:“项目是 my-proj,可用区是 us-west1-b,名称是 dev-cluster。” 模型:“以下是我将使用的配置: [JSON 视图] 是否继续?”

评论

支持 Markdown