创建可用区级集群


本文档介绍如何在 Google Kubernetes Engine (GKE) 中创建启用默认功能的标准区域级集群。区域级集群在单个区域具有一个控制层面。根据您的可用性要求,您可以选择将区域级集群的节点分布到单个区域或多个区域。

如需了解不同的集群可用性类型,请参阅集群配置选项简介

单区域与多区域

单区域集群有一个控制层面,该层面在一个区域中运行,并负责管理在同一区域中运行的节点上的工作负载。 如果您在单个可用区中运行工作负载,则在发生可用区级服务中断时,此工作负载会不可用。

多可用区集群的节点在多个可用区中运行,但只有一个控制平面副本。如果您在多个可用区中运行工作负载,并且发生可用区级服务中断,则工作负载会在该可用区中断,但在其他可用区仍然可用。

如果您需要更高的控制平面可用性,请考虑改为创建区域级集群。在区域级集群中,控制层面会复制到一个区域的多个地区中。

准备工作

在开始之前,请确保您已执行以下任务:

  • 启用 Google Kubernetes Engine API。
  • 启用 Google Kubernetes Engine API
  • 如果您要使用 Google Cloud CLI 执行此任务,请安装初始化 gcloud CLI。 如果您之前安装了 gcloud CLI,请运行 gcloud components update 以获取最新版本。
  • 多地区集群比单地区集群耗用的资源更多。 如果您要创建多区域集群,请确保您有足够的配额
  • 确保您具有创建集群的正确权限。您至少应是 Kubernetes Engine Cluster Admin
  • 如果您要将新集群注册到舰队(仅限受限访问权限),请确保您拥有所需的 API 和权限

创建可用区级集群

您可以使用 gcloud CLI、Google Cloud 控制台或 Terraform 创建可用区级集群。

如果您要使用 Cloud Code for VS Code 开发 GKE 应用,请尝试使用 Cloud Code 创建集群

gcloud

如需使用 gcloud CLI 创建可用区级集群,请使用以下命令之一。

请替换以下内容:

  • CLUSTER_NAME:新集群的名称。
  • CHANNEL发布版本的类型,可以是 rapidregularstableNone 之一。默认情况下,集群会注册在 regular 发布版本中,除非至少指定了以下标志之一:--cluster-version--release-channel--no-enable-autoupgrade--no-enable-autorepair
  • COMPUTE_ZONE:集群控制层面的计算可用区
  • VERSION:您要为集群指定的版本
  • COMPUTE_ZONE,COMPUTE_ZONE1,[...]:在其中创建节点的可用区。您可以根据集群的需要指定任意数量的可用区。所有可用区必须与集群的控制层面位于同一区域,由 --zone 标志指定。对于可用区级集群,--node-locations 必须包含集群的主要可用区。

在以下命令中,您可以选择使用 --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com 标志来指定集群的第一个节点池中的节点使用的其他 IAM 服务账号,而不是 Compute Engine 默认服务账号。此标志是可选的,但我们强烈建议您创建和使用最低权限的服务账号,这样您的节点权限就不会超出节点所需的权限。

使用特定的发布版本

如需使用特定发布版本创建新集群,请运行以下命令:

gcloud container clusters create CLUSTER_NAME \
    --release-channel CHANNEL \
    --zone COMPUTE_ZONE \
    --node-locations COMPUTE_ZONE,COMPUTE_ZONE1

使用特定版本

如需使用特定集群版本创建新集群,请运行以下命令:

gcloud container clusters create CLUSTER_NAME \
    --cluster-version VERSION \
    --zone COMPUTE_ZONE \
    --node-locations COMPUTE_ZONE,COMPUTE_ZONE1

使用未在发布渠道中注册的集群的默认版本

如需使用未在发布渠道中注册的集群的默认版本创建新集群,您无需指定集群版本,但需要将发布渠道设置为 None

gcloud container clusters create CLUSTER_NAME \
    --release-channel None \
    --zone COMPUTE_ZONE \
    --node-locations COMPUTE_ZONE,COMPUTE_ZONE1

示例

以下命令会创建一个名为 example-cluster 的多地区集群,其中集群控制层面位于 us-central-a 地区,并且有三个节点位置。集群已在 regular 发布版本中注册。

如果省略 --num-nodes 标志,则集群会默认为每个区域创建三个节点。由于指定了三个地区,因此该命令会创建一个包含九个节点的集群,us-central1-aus-central1-bus-central1-c 中各有三个节点。

gcloud container clusters create example-cluster \
    --zone us-central1-a \
    --node-locations us-central1-a,us-central1-b,us-central1-c

控制台

如需使用 Google Cloud 控制台创建可用区级集群,请执行以下任务:

  1. 转到 Google Cloud 控制台中的 Google Kubernetes Engine 页面。

    转到 Google Kubernetes Engine

  2. 点击 创建

  3. 集群基本信息部分,完成以下操作:

    1. 为集群输入名称
    2. 对于位置类型,选择可用区,然后为您的集群选择所需的可用区
    3. 如果要创建多可用区集群,请选中指定默认节点位置复选框,然后选择您希望运行节点池的其他可用区。

    4. 选择发布渠道。您可以根据需要从下拉列表中选择无渠道,但我们建议您查看何时不在发布渠道中注册集群。GKE 会自动使用来自稳定渠道的版本升级不在发布渠道中的集群。

    5. 可选:从版本下拉列表中指定控制平面版本。

  4. 可选(适用于 GKE Enterprise):如果您要将新集群注册到舰队,请前往舰队注册部分,然后按照 Google Cloud 控制台有关创建和注册新集群的说明完成集群注册。

  5. 在导航窗格的节点池下,点击默认池 (default-pool)。

  6. 节点池详情部分,完成以下操作:

    1. 为默认节点池输入一个名称
    2. 可选:选择节点版本
    3. 输入要在集群中创建的节点数。您必须具有节点及其资源(例如防火墙路由)的可用资源配额
    4. 可选:您可以选择停用节点自动升级,但我们建议您在选择此选项之前先查看停用节点自动升级功能之前的注意事项
  7. 在导航窗格的节点池下,点击节点

  8. 映像类型下拉列表中,选择节点映像

  9. 选择要用于实例的默认机器配置。每种机器类型的计费方式都各不相同。默认机器类型为 e2-medium。如需了解机器类型价格信息,请参阅机器类型价格表

  10. 启动磁盘类型下拉列表中,选择磁盘类型

  11. 输入启动磁盘大小

  12. 可选:在导航窗格的节点池下,点击安全

  13. 可选:从服务账号下拉列表中,选择应用在调用 Google Cloud API 时使用的 Identity and Access Management (IAM) 服务账号。我们建议您使用具有最低权限的服务账号(而不是使用默认服务账号),以确保您的节点权限不会超出节点所需的权限。

  14. 点击创建

Terraform

如需使用 Terraform 创建具有单可用区节点池的可用区级集群,请参阅以下示例:

resource "google_container_cluster" "default" {
  name               = "gke-standard-zonal-single-zone"
  location           = "us-central1-a"
  initial_node_count = 1

  # Set `deletion_protection` to `true` will ensure that one cannot
  # accidentally delete this instance by use of Terraform.
  deletion_protection = false
}

如需使用 Terraform 创建具有多可用区节点池的可用区级集群,请参阅以下示例:

resource "google_container_cluster" "default" {
  name               = "gke-standard-regional-multi-zone"
  location           = "us-central1"
  node_locations     = ["us-central1-b", "us-central1-c"]
  initial_node_count = 2

  # Set `deletion_protection` to `true` will ensure that one cannot
  # accidentally delete this instance by use of Terraform.
  deletion_protection = false
}

如需详细了解如何使用 Terraform,请参阅针对 GKE 的 Terraform 支持

使用 kubectl 与集群交互

创建集群后,您需要配置 kubectl,然后才能通过命令行与集群交互。

集群模板

GKE 之前支持集群模板。这些模板已从 Google Cloud 控制台中移除,但仍可通过以下链接访问:

后续步骤

自行试用

如果您是 Google Cloud 新手,请创建一个账号来评估 GKE 在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。

免费试用 GKE