管理集群

本文档介绍了如何在 Google Kubernetes Engine (GKE) 中管理集群。如需了解集群的工作原理,请参阅集群架构

准备工作

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

  • 启用 Google Kubernetes Engine API。
  • 启用 Google Kubernetes Engine API
  • 如果您要使用 Google Cloud CLI 执行此任务,请安装初始化 gcloud CLI。 如果您之前安装了 gcloud CLI,请通过运行 gcloud components update 命令来获取最新版本。较早版本的 gcloud CLI 可能不支持运行本文档中的命令。

查看集群

gcloud

  • 要查看特定集群,请运行以下命令:

    gcloud container clusters describe CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION
    

    替换以下内容:

    • CLUSTER_NAME:您的集群的名称。
    • CONTROL_PLANE_LOCATION:集群控制平面的 Compute Engine 位置。为区域级集群提供区域,或为可用区级集群提供可用区。
  • 如需列出项目中位于任何区域或可用区的所有集群,请运行以下命令:

    gcloud container clusters list
    
  • 如需列出位于特定区域或可用区的集群,请运行以下命令:

    gcloud container clusters list \
        --location=CONTROL_PLANE_LOCATION
    

控制台

如需查看集群,请打开 Google Cloud 控制台中的 Google Kubernetes Engine 页面。

转到 Google Kubernetes Engine

如需详细了解某一集群,请从列表中选择该集群。

kubectl 设置默认集群

如果您有多个集群,则可以为 kubectl 命令行工具设置默认集群。

如需了解详情,请参阅kubectl 命令设置默认集群

gcloud 设置默认集群

要为 gcloud 命令设置默认集群,请运行以下命令:

gcloud config set container/cluster CLUSTER_NAME

CLUSTER_NAME 替换为您的集群名称。

升级集群

默认情况下,GKE 会自动升级您的集群。但是,您可以选择自行升级标准集群。如需了解详情,请参阅手动升级集群

如需了解如何升级集群,请参阅升级集群的最佳做法

在 Standard 集群中添加或移除可用区

以下部分介绍了如何添加或移除集群可用区。 所有可用区必须位于集群所在的区域中。

更改地区级集群的地区

对于现有的可用区级集群,您可以添加或移除可用区。

gcloud

要为可用区级集群添加可用区或从可用区级集群移除可用区,请使用 gcloud container clusters update 命令:

gcloud container clusters update CLUSTER_NAME \
  --location CONTROL_PLANE_LOCATION \
  --node-locations COMPUTE_ZONE1,COMPUTE_ZONE2

请替换以下内容:

  • CLUSTER_NAME:您为集群选择的名称。
  • CONTROL_PLANE_LOCATION:集群控制平面的 Compute Engine 可用区
  • COMPUTE_ZONE1,COMPUTE_ZONE2,[...]:在其中创建节点的可用区。您可以根据集群的需要指定任意数量的可用区。所有可用区必须与集群的控制平面位于同一区域,由 --location 标志指定。对于可用区级集群,--node-locations 必须包含集群的主要可用区。

例如,example-clusterus-central1-a 中运行。要向集群额外添加两个地区,请运行以下命令:

gcloud container clusters update example-cluster \
  --location us-central1-a
  --node-locations us-central1-a,us-central1-b,us-central1-c

再举一例,example-clusterus-central1-aus-central1-bus-central1-c 中运行。如果您只希望集群在 us-central1-aus-central1-b 中运行,请运行以下命令:

gcloud container clusters update example-cluster \
  --location us-central1-a \
  --node-locations us-central1-a,us-central1-b

控制台

要在现有集群中添加地区或从现有集群中移除地区,请执行以下步骤:

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

    转到 Google Kubernetes Engine

  2. 在要修改的集群旁边,点击 操作,然后点击 修改

  3. 在“详细信息”标签页下的默认节点可用区字段中,点击 修改节点池 (Edit node pools)。

  4. 选择所需的可用区并保存更改。

更改区域级集群的可用区

目前,只能使用 gcloud 命令更改现有区域级集群的地区。

要为区域级集群添加可用区或从区域级集群移除可用区,请使用带 --node-locations 标志的 gcloud container clusters update 命令:

gcloud container clusters update CLUSTER_NAME \
  --location CONTROL_PLANE_LOCATION \
  --node-locations COMPUTE_ZONE1,COMPUTE_ZONE2

请替换以下内容:

  • CLUSTER_NAME:集群的名称。
  • CONTROL_PLANE_LOCATION:集群控制平面的 Compute Engine 区域
  • COMPUTE_ZONE1COMPUTE_ZONE2,[...]:在其中创建节点的可用区控制平面区域。可用区必须与集群的控制平面位于同一 CONTROL_PLANE_LOCATION,由 --location 标志指定。

例如,example-clusterus-central1-aus-central1-b 中运行。要添加 us-central1-c,请运行以下命令:

gcloud container clusters update example-cluster \
  --location us-central1 \
  --node-locations us-central1-a,us-central1-b,us-central1-c

再举一例,example-clusterus-central1-aus-central1-bus-central1-c 中运行。如果您只希望集群在 us-central1-aus-central1-b 中运行,请运行以下命令:

gcloud container clusters update example-cluster \
  --location us-central1 \
  --node-locations us-central1-a,us-central1-b

调整集群大小

您可以调整标准集群的大小,以增加或减少其包含的节点数。例如,如果您想要阻止集群消耗资源,而不删除集群,可以将节点数量缩减至零。如需详细了解如何调整大小,请参阅调整集群大小

Autopilot 集群会根据您的 Pod 规范自动调整其大小,因此您无需考虑调整集群大小。例如,如果您更改 Pod 的副本数量或其请求的资源数量,则系统将相应地增加或缩减集群大小。

如果您希望以更高效的方式优化集群,还可以使用 Pod 纵向自动扩缩 (VPA)。 该自动扩缩器可以为 CPU 和内存请求及限制提供建议值,也可以自动更新这些值。

删除集群

您可以在需要时删除集群。如需了解详情,请参阅删除集群

使用拒绝政策防止集群被删除

您可以使用 IAM 拒绝政策来防止删除某些关键集群,无论哪个主账号尝试删除。如需在拒绝政策中指定特定集群,请向这些集群添加标记。然后,您可以使用拒绝条件,以便仅将拒绝政策应用于具有该标记的集群。

如需保护特定集群免遭删除,请按以下步骤操作:

  1. 创建并定义标记键以标识受保护的集群。例如,您可以创建一个名为 do_not_delete 的标记键。

  2. 将标记键附加到集群

  3. 选择以下选项之一,创建 IAM 拒绝政策:

    控制台

    1. 在 Google Cloud 控制台中,前往 IAM 页面上的拒绝标签页。

      前往 IAM 拒绝

    2. 点击 创建拒绝访问政策。系统会打开创建拒绝访问政策页面。

    3. ID 字段中,为拒绝政策指定一个唯一且不可变的 ID。

    4. 新拒绝规则部分中,执行以下操作:

      1. 拒绝的主账号字段中,指定 principalSet://goog/public:all,该值涵盖所有主账号。

      2. 被拒绝的权限部分中,在权限 1 下拉列表中,找到并选择 container.googleapis.com/clusters.delete 权限。

      3. 点击 添加拒绝条件。系统会打开添加拒绝条件窗格。

      4. 为条件指定一个描述性标题,例如 Cluster has the do_not_delete tag

      5. 条件构建器标签页中,从条件类型 1 下拉列表中选择标记

      6. 运算符下拉列表中,选择具有密钥

      7. 键路径下拉列表中,选择您应用于集群的标记键,例如 do_not_delete

      8. 点击保存

    5. 点击创建

    gcloud

    1. 创建一个包含以下拒绝政策的 JSON 文件:

      {
        "displayName": "Prevent cluster deletion based on tag",
        "rules": [
          {
            "description": "Prevent cluster deletion based on tag",
            "deniedPrincipals": [
              "principalSet://goog/public:all"
            ],
            "deniedPermissions": [
              "container.googleapis.com/clusters.delete"
            ],
            "denialCondition": {
              "title": "Cluster has the do_not_delete tag",
              "expression": "resource.hasTagKey('TAG_KEY_NAME')
            }
          }
        ]
      }
      

      TAG_KEY_NAME 替换为您创建的标记密钥的路径。

    2. 使用 gcloud iam policies create 命令创建拒绝政策:

      gcloud iam policies create POLICY_ID \
          --attachment-point=ATTACHMENT_POINT \
          --kind=denypolicies --policy-file=POLICY_FILE
      

      替换以下内容:

      • POLICY_ID:拒绝政策的 ID。
      • ATTACHMENT_POINT:要附加拒绝政策的组织、文件夹或项目。例如,如果您将拒绝政策附加到某个文件夹,则该政策会应用于该文件夹中任何项目内的集群。如需了解详情,请参阅附件点
      • POLICY_FILE:您在上一步中创建的 JSON 文件的路径。

创建拒绝政策后,任何人都无法删除具有拒绝条件中指定的标记键的集群。任何删除集群的尝试都会失败,并显示 Permission denied 错误消息。如需允许删除集群,您必须从集群中分离该标记键

将集群添加到舰队

如果您的组织使用多个集群,则可以将集群添加到舰队(即 Kubernetes 集群的逻辑分组)来简化多集群管理。创建舰队可帮助您的组织将管理级别从单个集群升级到整组集群,并让您能够使用支持舰队的功能,例如多集群 Ingress Config SyncPolicy Controller

您可以使用Google Cloud 控制台、gcloud CLI,或者以声明方式使用 Terraform 或 Config Connector 将 GKE 集群添加到舰队。

如需详细了解舰队的工作原理,请参阅舰队管理;如需了解如何创建舰队,请参阅创建舰队以简化多集群管理

后续步骤