创建区域级集群


本文档介绍如何创建标准区域级集群,以在集群升级、自动维护或可用区级服务中断期间提高集群控制平面和工作负载的可用性。

GKE Autopilot 集群始终为区域级集群。

概览

当您创建区域级集群而不是可用区级集群时,集群的控制平面会跨给定区域中的多个可用区复制。对于可用区级集群中的节点池,您可以手动指定要在其中运行节点池的可用区,也可以使用默认配置,该配置会在控制层面区域的三个可用区之间复制每个节点池。所有可用区都必须与集群的控制平面位于同一区域内。

区域级集群会跨多个可用区复制资源,并且需要耗用额外的配额

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

以下部分中的说明介绍了如何执行以下操作:

创建区域级集群后,您无法再将其转换为可用区级集群。

创建新的区域级集群时,您至少需要指定名称、项目(通常是当前项目)和区域(通常是命令行工具的默认位置),所有其他值都使用默认设置。不过,还有更多可能的配置设置,本指南仅介绍其中一部分,并且其中一些设置在创建集群后无法更改。请确保您了解哪些设置在创建集群后无法更改,并且在创建集群时选择正确的设置,以免不得不重新创建集群。

您可以在集群配置选项简介中查看集群配置选项的概览,并在 gcloud container clusters create 和 Terraform google_container_cluster 参考指南中查看可能的选项的完整列表。

准备工作

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

  • 启用 Google Kubernetes Engine API。
  • 启用 Google Kubernetes Engine API
  • 如果您要使用 Google Cloud CLI 执行此任务,请安装初始化 gcloud CLI。 如果您之前安装了 gcloud CLI,请运行 gcloud components update 以获取最新版本。

为 GKE 设置 IAM 服务账号

GKE 使用关联到节点的 IAM 服务账号来运行日志记录和监控等系统任务。这些节点服务账号必须至少拥有项目的 Kubernetes Engine Default Node Service Account (roles/container.defaultNodeServiceAccount) 角色。默认情况下,GKE 会将 Compute Engine 默认服务账号(在您的项目中自动创建)用作节点服务账号。

如需向 Compute Engine 默认服务账号授予 roles/container.defaultNodeServiceAccount 角色,请完成以下步骤:

控制台

  1. 前往欢迎页面:

    前往“欢迎”页面

  2. 项目编号字段中,点击 复制到剪贴板
  3. 转到 IAM 页面:

    转到 IAM

  4. 点击 授予访问权限
  5. 新的主账号字段中,指定以下值:
    PROJECT_NUMBER-compute@developer.gserviceaccount.com
    PROJECT_NUMBER 替换为您复制的项目编号。
  6. 选择角色菜单中,选择 Kubernetes Engine Default Node Service Account 角色。
  7. 点击保存

gcloud

  1. 找到您的 Google Cloud 项目编号:
    gcloud projects describe PROJECT_ID \
        --format="value(projectNumber)"

    PROJECT_ID 替换为您的项目 ID。

    输出内容类似如下:

    12345678901
    
  2. roles/container.defaultNodeServiceAccount 角色授予 Compute Engine 默认服务账号:
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
        --role="roles/container.defaultNodeServiceAccount"

    PROJECT_NUMBER 替换为上一步中的项目编号。

创建具有单可用区节点池的区域级集群

以下说明介绍如何创建区域性集群,其中节点池在区域内的单个可用区中运行。集群的控制平面会复制到指定区域的多个可用区中,但节点位于单个可用区中,不会复制到其他可用区。

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

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

gcloud

如需使用 gcloud CLI 创建区域级集群,请使用以下命令之一并替换以下变量:

  • CLUSTER_NAME:新地区级集群的名称。
  • CONTROL_PLANE_LOCATION:集群控制平面的 Compute Engine 区域。提供一个区域,例如 us-central1
  • COMPUTE_ZONE:节点池的可用区,例如 us-central1-a。此可用区必须与集群控制平面位于同一区域。
  • CHANNEL发布版本的类型,可以是 rapidregularstableNone 之一。默认情况下,集群会注册在 regular 发布版本中,除非至少指定了以下标志之一:--cluster-version--release-channel--no-enable-autoupgrade--no-enable-autorepair
  • VERSION:您要为集群指定的版本

我们强烈建议您指定节点可以使用的具有最低权限的 IAM 服务账号,而不是 Compute Engine 默认服务账号。如需了解如何创建具有最低权限的服务账号,请参阅使用最小权限服务账号

如需在 gcloud CLI 中指定自定义服务账号,请在您的命令中添加以下标志:

--service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

SERVICE_ACCOUNT_NAME 替换为具有最低权限的服务账号的名称。

使用特定的发布版本

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

gcloud container clusters create CLUSTER_NAME \
    --location CONTROL_PLANE_LOCATION \
    --node-locations COMPUTE_ZONE \
    --release-channel CHANNEL

使用特定版本

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

gcloud container clusters create CLUSTER_NAME \
    --location CONTROL_PLANE_LOCATION \
    --node-locations COMPUTE_ZONE \
    --cluster-version VERSION

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

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

gcloud container clusters create CLUSTER_NAME \
    --location CONTROL_PLANE_LOCATION \
    --node-locations COMPUTE_ZONE \
    --release-channel None

示例

以下命令会创建一个在 regular 发布渠道(默认)中注册的区域级集群,其中 us-west1-c 可用区有三个节点(默认):

gcloud container clusters create my-regional-cluster \
    --location us-west1 \
    --node-locations us-west1-c

示例

以下命令会创建一个在 regular 发布渠道(默认)中注册的区域级集群,其中两个节点位于 us-west1-c 可用区:

gcloud container clusters create my-regional-cluster \
    --location us-west1 \
    --node-locations us-west1-c \
    --num-nodes 2

控制台

  1. 前往 Google Cloud 控制台中的 Google Kubernetes Engine 页面。

    转到 Google Kubernetes Engine

  2. 点击 创建

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

    1. 为集群输入名称
    2. 对于位置类型,选择区域,然后为您的集群选择区域
    3. 如果要覆盖默认节点位置(例如,要在单个区域中运行),请选中指定默认节点位置复选框,然后选择要运行节点池的区域。

    4. 选择发布渠道。您可以根据需要从下拉列表中选择无渠道,但我们建议您查看已注册发布渠道和未注册发布渠道的集群之间的比较,然后再选择此选项。GKE 会自动使用来自稳定渠道的版本升级不在发布渠道中的集群。

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

  4. 可选:为新集群配置其他设置。

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

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

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

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

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

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

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

  12. 输入启动磁盘大小

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

  14. (可选)为节点指定自定义 IAM 服务账号:
    1. 高级设置页面中,展开安全部分。
    2. 服务账号菜单中,选择您想使用的服务账号。

    我们强烈建议您指定节点可以使用的具有最低权限的 IAM 服务账号,而不是 Compute Engine 默认服务账号。如需了解如何创建具有最低权限的服务账号,请参阅使用最小权限服务账号

  15. 点击创建

Terraform

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

resource "google_container_cluster" "default" {
  name               = "gke-standard-regional-single-zone"
  location           = "us-west1"
  node_locations     = ["us-west1-c"]
  initial_node_count = 2
}

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

使用 kubectl 与集群交互

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

创建具有多可用区节点池的区域级集群

以下说明介绍了如何使用默认设置的多可用区节点池创建区域级集群。集群的控制平面和节点将在指定区域的多个可用区中复制。

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

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

gcloud

如需使用 gcloud CLI 创建区域级集群,请使用以下命令之一并替换以下变量:

  • CLUSTER_NAME:新地区级集群的名称。
  • CONTROL_PLANE_LOCATION:集群控制平面的 Compute Engine 区域。提供一个区域,例如 us-central1
  • CHANNEL发布版本的类型,可以是 rapidregularstableNone 之一。默认情况下,如果未指定以下标志,则集群注册在 regular 发布版本中:--cluster-version--release-channel--no-enable-autoupgrade--no-enable-autorepair
  • VERSION:您要为集群指定的版本
  • 对于所含可用区数超过三个的区域或者需要较少可用区的情况,您可以使用可选的 --node-locations 标志替换用于复制节点的默认区域。

我们强烈建议您指定节点可以使用的具有最低权限的 IAM 服务账号,而不是 Compute Engine 默认服务账号。如需了解如何创建具有最低权限的服务账号,请参阅使用最小权限服务账号

如需在 gcloud CLI 中指定自定义服务账号,请在您的命令中添加以下标志:

--service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

SERVICE_ACCOUNT_NAME 替换为具有最低权限的服务账号的名称。

使用特定的发布版本

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

gcloud container clusters create CLUSTER_NAME \
    --location CONTROL_PLANE_LOCATION \
    --release-channel CHANNEL

使用特定版本

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

gcloud container clusters create CLUSTER_NAME \
    --location CONTROL_PLANE_LOCATION \
    --cluster-version VERSION

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

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

gcloud container clusters create CLUSTER_NAME \
    --location CONTROL_PLANE_LOCATION \
    --release-channel None

示例

以下命令会创建一个在 regular 发布版本中注册的区域级集群,其中 us-west1 有九个节点(三个可用区各有三个节点,这是默认设置):

gcloud container clusters create my-regional-cluster --location us-west1

示例

以下命令会创建一个在 regular 发布版本中注册的区域级集群,其中有六个节点(三个可用区各有两个节点;由 --num-nodes 指定):

gcloud container clusters create my-regional-cluster \
    --location us-west1 \
    --num-nodes 2

示例

以下命令会创建一个在 regular 发布版本中注册的区域级集群,其中两个可用区有六个节点(由 --node-locations 指定的两个可用区各有三个节点):

gcloud container clusters create my-regional-cluster \
    --location us-central1 \
    --node-locations us-central1-b,us-central1-c

控制台

  1. 前往 Google Cloud 控制台中的 Google Kubernetes Engine 页面。

    转到 Google Kubernetes Engine

  2. 点击 创建

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

    1. 为集群输入名称
    2. 对于位置类型,选择区域,然后为您的集群选择区域
    3. 如果要覆盖默认节点位置(例如,要在单个区域中运行),请选中指定默认节点位置复选框,然后选择要运行节点池的区域。

    4. 选择发布渠道。您可以根据需要从下拉列表中选择无渠道,但我们建议您查看已注册发布渠道和未注册发布渠道的集群之间的比较,然后再选择此选项。GKE 会自动使用来自稳定渠道的版本升级不在发布渠道中的集群。

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

  4. 可选:为新集群配置其他设置。

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

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

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

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

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

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

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

  12. 输入启动磁盘大小

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

  14. (可选)为节点指定自定义 IAM 服务账号:
    1. 高级设置页面中,展开安全部分。
    2. 服务账号菜单中,选择您想使用的服务账号。

    我们强烈建议您指定节点可以使用的具有最低权限的 IAM 服务账号,而不是 Compute Engine 默认服务账号。如需了解如何创建具有最低权限的服务账号,请参阅使用最小权限服务账号

  15. 点击创建

Terraform

如需使用 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
}

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

使用 kubectl 与集群交互

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

后续步骤