添加和管理节点池


本页面介绍如何添加运行 Google Kubernetes Engine (GKE) 集群的节点池以及如何对该节点池执行操作。如需了解节点池的工作原理,请参阅节点池

准备工作

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

使用以下任一方法设定默认的 gcloud 设置:

  • 使用 gcloud init(如果您想要在系统引导下完成默认设置)。
  • 使用 gcloud config(如果您想单独设置项目 ID、区域和地区)。

使用 gcloud init

如果您收到 One of [--zone, --region] must be supplied: Please specify location 错误,请完成本部分。

  1. 运行 gcloud init 并按照说明操作:

    gcloud init

    如果您要在远程服务器上使用 SSH,请使用 --console-only 标志来防止命令启动浏览器:

    gcloud init --console-only
  2. 按照说明授权 gcloud 使用您的 Google Cloud 帐号。
  3. 创建新配置或选择现有配置。
  4. 选择 Google Cloud 项目。
  5. 为可用区级集群选择默认 Compute Engine 可用区,或为区域级集群或 Autopilot 集群选择区域。

使用 gcloud config

  • 设置默认项目 ID
    gcloud config set project PROJECT_ID
  • 如果您使用的是可用区级集群,请设置默认计算可用区
    gcloud config set compute/zone COMPUTE_ZONE
  • 如果您使用的是 Autopilot 集群或区域级集群,请设置默认计算区域
    gcloud config set compute/region COMPUTE_REGION
  • gcloud 更新到最新版本:
    gcloud components update

添加节点池

gcloud

要创建节点池,请运行 gcloud container node-pools create 命令:

gcloud container node-pools create POOL_NAME --cluster CLUSTER_NAME

如需查看选项的完整列表,请参阅 gcloud container node-pools create 文档。

成功的 node-pools create 请求会返回节点池信息:

Creating node pool example-pool...done.
Created [https://container.googleapis.com/v1/projects/kubernetes-engine-docs/zones/us-central1-f/clusters/example-cluster/nodePools/example-pool].
NAME          MACHINE_TYPE   DISK_SIZE_GB  NODE_VERSION
example-pool  e2-medium      100           1.2.4

节点池已创建。有时节点池已成功创建,但 gcloud 命令会超时,而不是报告服务器的状态。要检查所有节点池的状态,包括尚未完全预配的节点池,请使用以下命令:

gcloud container node-pools list --cluster CLUSTER_NAME

控制台

要将节点池添加到现有集群,请执行以下步骤:

  1. 访问 Cloud Console 中的 Google Kubernetes Engine 菜单。

    访问 Google Kubernetes Engine 菜单

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

  3. 点击 添加节点池

  4. 根据需要配置您的节点池。

  5. 点击创建以添加节点池。

查看集群中的节点池

gcloud

要列出集群的所有节点池,请运行 gcloud container node-pools list 命令:

gcloud container node-pools list --cluster CLUSTER_NAME

要查看特定节点池的详细信息,请运行 gcloud container node-pools describe 命令:

gcloud container node-pools describe POOL_NAME \
    --cluster CLUSTER_NAME

请替换以下内容:

  • CLUSTER_NAME:集群的名称。
  • POOL_NAME:要查看的节点池的名称。

控制台

如需查看集群的节点池,请执行以下步骤:

  1. 访问 Cloud Console 中的 Google Kubernetes Engine 菜单。

    访问 Google Kubernetes Engine 菜单

  2. 在集群列表中,点击集群的名称。

  3. 点击节点标签页。

  4. 节点池下,点击要查看的节点池的名称。

调整节点池的大小

gcloud

如需调整集群节点池的大小,请运行 gcloud container clusters resize 命令:

gcloud container clusters resize CLUSTER_NAME --node-pool POOL_NAME \
    --num-nodes NUM_NODES

请替换以下内容:

  • CLUSTER_NAME:要调整大小的集群的名称。
  • POOL_NAME:要调整大小的节点池的名称。
  • NUM_NODES:区域级集群中的池中的节点数。如果您使用多区域级或多地区级集群,则 NUM_NODES 是节点池所在的每个区域的节点数。

对每个节点池重复此命令。如果集群只有一个节点池,请省略 --node-pool 标志。

控制台

如需调整集群节点池的大小,请执行以下步骤:

  1. 访问 Cloud Console 中的 Google Kubernetes Engine 菜单。

    访问 Google Kubernetes Engine 菜单

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

  3. 点击节点标签页。

  4. 节点池部分中,点击要调整大小的节点池的名称。

  5. 点击 调整大小

  6. 节点数字段中,输入节点池中所需的节点数量,然后点击调整大小

  7. 根据需要对每个节点池重复此操作。

升级节点池

gcloud

如需将所有节点更新为与控制平面相同的版本,请运行 gcloud container clusters upgrade 命令

gcloud container clusters upgrade CLUSTER_NAME

要更新特定节点池,请指定 --node-pool 标志:

gcloud container clusters upgrade CLUSTER_NAME --node-pool POOL_NAME

控制台

要升级节点池,请执行以下步骤:

  1. 访问 Cloud Console 中的 Google Kubernetes Engine 菜单。

    访问 Google Kubernetes Engine 菜单

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

  3. 点击节点标签页。

  4. 节点池部分,点击要升级的节点池的名称。

  5. 点击 修改

  6. 节点版本下,点击更改

  7. 选择所需的节点版本。

  8. 点击更改

将 Pod 部署到特定节点池

您可以使用 Pod 清单中的 nodeSelector 明确地将 Pod 部署到特定节点池。nodeSelector 将 Pod 调度到具有匹配标签的节点上。

所有 GKE 节点池都具有格式如下所示的标签:cloud.google.com/gke-nodepool: POOL_NAME。向 Pod 中的 nodeSelector 字段添加此标签,如以下示例所示:

apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    env: test
spec:
  containers:
  - name: nginx
    image: nginx
    imagePullPolicy: IfNotPresent
  nodeSelector:
    cloud.google.com/gke-nodepool: POOL_NAME

如需了解详情,请参阅将 Pod 分配给节点

作为节点选择器的替代方案,您可以使用节点亲和性。如果您需要使用“软”规则,请使用节点亲和性,所谓软规则,就是您希望 Pod 尝试满足限制条件,但即使无法满足限制条件,也仍被调度。如需了解详情,请参阅节点亲和性。您还可以为容器指定资源请求量

删除节点池

如果删除节点池,则节点及指向节点的路由也将随之删除。系统将逐出并重新安排在这些节点上运行的任何 Pod。如果 Pod 具有特定的节点选择器,且如果集群中的其他节点均不符合标准,则 Pod 可能仍处于无法安排的状态。

gcloud

要删除节点池,请运行 gcloud container node-pools delete 命令:

gcloud container node-pools delete POOL_NAME --cluster CLUSTER_NAME

控制台

要删除节点池,请执行以下步骤:

  1. 访问 Cloud Console 中的 Google Kubernetes Engine 菜单。

    访问 Google Kubernetes Engine 菜单

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

  3. 点击节点标签页。

  4. 节点池部分中,点击要删除的节点池旁边的

  5. 当系统提示您确认时,点击删除

后续步骤