管理节点池

节点池是 Kubernetes 集群中全部具有相同配置的一组节点。节点池使用 NodePool 规范。池中的每个节点都有一个 Kubernetes 节点标签,该标签的值就是节点池的名称。 默认情况下,所有新节点池都运行与控制平面相同的 Kubernetes 版本。

创建用户集群时,指定的节点数和节点类型将用于创建集群的第一个节点池。您可以向集群添加其他不同大小和类型的节点池。任何给定节点池中的所有节点都彼此相同。

如果您要调度的 pod 比其他 pod 需要更多的资源(例如更多内存或本地磁盘空间),则自定义节点池会非常有用。如果您需要更好地控制 Pod 的调度,可以使用节点污点。

您可以单独创建和删除节点池,而不会影响整个集群。您无法在节点池中配置单个节点。任何配置更改都会影响节点池中的所有节点。

您可以通过扩大或缩小节点池来调整集群中的节点池大小。缩减节点池是一项自动化流程,您只需减小节点池大小,GDC 系统便会自动排空并逐出任意节点。在缩减节点池时,您无法选择要移除的特定节点。

准备工作

如需管理用户集群中的节点池,您必须拥有用户集群管理员角色(user-cluster-admin 角色)。

添加节点池

从 GDC 控制台创建用户集群时,您可以在集群创建初始化之前自定义默认节点池并创建其他节点池。如果您必须向现有用户集群添加节点池,请完成以下步骤:

控制台

  1. 在导航菜单中,选择集群
  2. 在集群列表中点击相应集群。系统随即会显示集群详情页面。
  3. 依次选择节点池 > 添加节点池
  4. 为节点池分配名称。创建节点池后,您将无法修改名称。
  5. 指定要在节点池中创建的工作器节点数。
  6. 选择最符合工作负载要求的机器类。机器类显示在以下设置中:
    • 机器类型
    • vCPU
    • 内存
  7. 可选:添加 Kubernetes 键值对标签,以整理节点池的资源。
  8. 点击保存

API

  1. 使用 kubectl CLI 通过交互式编辑器打开 Cluster 自定义资源规范:

    kubectl edit clusters.cluster.gdc.goog/USER_CLUSTER_NAME -n platform \
        --kubeconfig ADMIN_CLUSTER_KUBECONFIG
    

    替换以下内容:

    • USER_CLUSTER_NAME:用户集群的名称。
    • ADMIN_CLUSTER_KUBECONFIG:管理员集群的 kubeconfig 文件路径。
  2. nodePools 部分中添加新条目:

    nodePools:
    ...
    - machineTypeName: MACHINE_TYPE
      name: NODE_POOL_NAME
      nodeCount: NUMBER_OF_WORKER_NODES
      taints: TAINTS
      labels: LABELS
    

    替换以下内容:

    • MACHINE_TYPE:节点池的工作器节点的机器类型。查看可用机器类型,了解可配置的资源。
    • NODE_POOL_NAME:节点池的名称。
    • NUMBER_OF_WORKER_NODES:要在节点池中预配的工作器节点数。
    • TAINTS:要应用于此节点池的节点的污点。这是一个可选字段。
    • LABELS:要应用于此节点池的节点的标签。它包含一个键值对列表。此字段为可选字段。
  3. 保存文件并退出编辑器。

查看节点池

如需查看用户集群中的现有节点池,请完成以下步骤:

控制台

  1. 在导航菜单中,选择集群
  2. 在集群列表中点击相应集群。系统随即会显示集群详情页面。
  3. 选择节点池

系统会显示集群中运行的节点池列表。您可以在此页面中管理集群的节点池。

API

  • 查看特定用户集群的节点池:

    kubectl get clusters.cluster.gdc.goog/USER_CLUSTER_NAME -n platform \
        -o json --kubeconfig ADMIN_CLUSTER_KUBECONFIG | \
        jq .status.workerNodePoolStatuses
    

    输出类似于以下内容:

    [
      {
        "conditions": [
          {
            "lastTransitionTime": "2023-08-31T22:16:17Z",
            "message": "",
            "observedGeneration": 2,
            "reason": "NodepoolReady",
            "status": "True",
            "type": "Ready"
          },
          {
            "lastTransitionTime": "2023-08-31T22:16:17Z",
            "message": "",
            "observedGeneration": 2,
            "reason": "ReconciliationCompleted",
            "status": "False",
            "type": "Reconciling"
          }
        ],
        "name": "worker-node-pool",
        "readyNodes": 3,
        "readyTimestamp": "2023-08-31T18:59:46Z",
        "reconcilingNodes": 0,
        "stalledNodes": 0,
        "unknownNodes": 0
      }
    ]
    

删除节点池

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

在删除节点池之前,请确保您至少有 3 个工作器节点,以确保集群有足够的计算空间来有效运行。

如需删除节点池,请完成以下步骤:

控制台

  1. 在导航菜单中,选择集群

  2. 点击要删除的节点池所在的集群。

  3. 选择节点池

  4. 点击要删除的节点池旁边的 删除

API

  1. 使用 kubectl CLI 通过交互式编辑器打开 Cluster 自定义资源规范:

    kubectl edit clusters.cluster.gdc.goog/USER_CLUSTER_NAME -n platform \
          --kubeconfig ADMIN_CLUSTER_KUBECONFIG
    

    替换以下内容:

    • USER_CLUSTER_NAME:用户集群的名称。
    • ADMIN_CLUSTER_KUBECONFIG:管理员集群的 kubeconfig 文件路径。
  2. nodePools 部分中移除节点池条目。例如,在以下代码段中,您必须移除 machineTypeNamenamenodeCount 字段:

    nodePools:
    ...
    - machineTypeName: n2-standard-2-gdc
      name: nodepool-1
      nodeCount: 3
    

    请务必移除要删除的节点池的所有字段。

  3. 保存文件并退出编辑器。

工作器节点机器类型

在 Google Distributed Cloud (GDC) 网闸隔离设备中创建用户集群时,您需要创建负责在集群中运行容器工作负载的节点池。您可以根据容器工作负载要求来预配节点,并随着要求的变化更新节点。

GDC 为工作节点提供预定义的机器类型,您可以在添加节点池时选择这些类型。

可用机器类型

GDC 定义了用户集群节点的机器类型,其中包含 CPU、内存和 GPU 等参数。GDC 具有多种机器类型,可用于不同的用途。 例如,用户集群使用 n2-standard-2-gdc 来处理通用容器工作负载。您还可以找到用于内存优化目的的机器类型,例如 n2-highcpu-8-gdc。如果您计划运行深度学习容器,则必须预配 GPU 机器,例如 a2-highgpu-1g-gdc

以下是可用于用户集群工作器节点的所有 GDC 预定义机器类型的列表:

名称 vCPU 内存 GPU 数量
n2-standard-2-gdc 2 8G 不适用
n2-standard-4-gdc 4 16G 不适用
n2-highmem-4-gdc 4 32G 不适用
n2-highcpu-8-gdc 8 8G 不适用
n2-standard-8-gdc 8 32G 不适用
n2-highmem-8-gdc 8 64G 不适用
a2-highgpu-1g-gdc 12 85G 1
a2-ultragpu-1g-gdc 12 170G 1