创建 Google Distributed Cloud (GDC) 气隙 Kubernetes 集群时,您指定的节点数和节点类型会创建集群的第一个节点池。随着现有集群的计算需求发生变化,您可以执行以下节点池任务:
如需详细了解集群中的节点池,请参阅 关于节点。
本文档适用于应用运营团队中的应用开发者和平台管理员团队中的 IT 管理员,他们负责管理组织内的 Kubernetes 集群。如需了解详情,请参阅 GDC 气隙文档的受众。
准备工作
如需完成本文档中的任务,您必须请求必要的权限并准备环境。
请求 IAM 角色
您必须拥有特定角色,才能获得在 Kubernetes 集群中管理节点池所需的权限。您需要的角色取决于您是在组织范围的共享集群还是项目范围的标准集群中工作。如需了解详情,请参阅 Kubernetes 集群配置。
共享集群角色
如需创建、删除、修改或查看共享集群的节点池,请与组织 IAM 管理员联系,以请求 User Cluster Admin (user-cluster-admin) 角色。此角色未绑定到命名空间。
标准集群角色
如需创建、删除、修改或查看标准集群的节点池,请与项目 IAM 管理员联系,以请求 Standard Cluster Admin (standard-cluster-admin) 角色。此角色绑定到您的项目命名空间。
准备环境
如需使用 API 对 Kubernetes 集群 运行命令,请确保您拥有以下资源:
找到 Kubernetes 集群名称,或向平台管理员团队的成员询问集群名称。
使用 Kubernetes 集群名称替换这些说明中的
KUBERNETES_CLUSTER_NAME。登录并生成 管理 API 服务器 kubeconfig 文件,用于 Kubernetes 集群。
使用管理 API 服务器的 kubeconfig 路径替换这些说明中的
MANAGEMENT_API_SERVER。
添加节点池
如需将节点池添加到现有 Kubernetes 集群,请完成以下步骤:
控制台
- 在导航菜单中,依次选择 Kubernetes Engine > 集群。
- 在集群列表中,点击集群。此时会显示集群详情 页面。
- 依次选择节点池 > 添加节点池。
- 为节点池分配名称。创建节点池后,您无法修改名称。
- 指定要在节点池中创建的工作器节点数。
- 选择最符合您的工作负载要求的机器类。机器类显示在以下设置中:
- 机器类型
- vCPU
- 内存
- 点击保存 。
API
使用交互式编辑器通过
kubectlCLI 打开Cluster自定义资源规范:kubectl edit clusters.cluster.gdc.goog/KUBERNETES_CLUSTER_NAME \ -n KUBERNETES_CLUSTER_NAMESPACE \ --kubeconfig MANAGEMENT_API_SERVER替换以下内容:
KUBERNETES_CLUSTER_NAME:集群的名称。KUBERNETES_CLUSTER_NAMESPACE:集群的命名空间。对于共享集群,请使用platform命名空间。对于标准集群,请使用集群的项目命名空间。MANAGEMENT_API_SERVER:托管 Kubernetes 集群的可用区级 API 服务器的 kubeconfig 路径。
在
nodePools部分中添加新条目:nodePools: # Several lines of code are omitted here. - machineTypeName: MACHINE_TYPE name: NODE_POOL_NAME nodeCount: NUMBER_OF_WORKER_NODES taints: TAINTS labels: LABELS acceleratorOptions: gpuPartitionScheme: GPU_PARTITION_SCHEME替换以下内容:
MACHINE_TYPE:节点池的工作器节点的机器类型。查看可配置的 可用机器类型 。NODE_POOL_NAME:节点池的名称。NUMBER_OF_WORKER_NODES:要在节点池中预配的工作器节点数。TAINTS:要应用于此节点池的节点的污点。这是一个可选字段。LABELS:要应用于此节点池的节点的标签。它包含键值对列表。这是一个可选字段。GPU_PARTITION_SCHEME:GPU 分区方案(如果您运行 GPU 工作负载)。例如,mixed-2。如果未设置此字段,则不会对 GPU 进行分区。如需查看可用的 多实例 GPU (MIG) 配置文件,请参阅 支持的 MIG 配置文件。
保存文件并退出编辑器。
查看节点池
如需查看 Kubernetes 集群中的现有节点池,请完成以下步骤:
控制台
- 在导航菜单中,依次选择 Kubernetes Engine > 集群。
- 在集群列表中,点击集群。此时会显示集群详情 页面。
- 选择节点池 。
此时会显示集群中运行的节点池列表。您可以在此页面中管理集群的节点池。
API
查看特定 Kubernetes 集群的节点池:
kubectl get clusters.cluster.gdc.goog/KUBERNETES_CLUSTER_NAME \ -n KUBERNETES_CLUSTER_NAMESPACE \ -o json --kubeconfig MANAGEMENT_API_SERVER | \ jq .status.workerNodePoolStatuses替换以下内容:
KUBERNETES_CLUSTER_NAME:集群的名称。KUBERNETES_CLUSTER_NAMESPACE:集群的命名空间。对于共享集群,请使用platform命名空间。对于标准集群,请使用集群的项目命名空间。
输出类似于以下内容:
[ { "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 } ]
调整节点池的大小
您可以通过扩容或缩容节点池来手动调整 Kubernetes 集群中节点池的大小。缩容节点池时,您无法选择要移除的特定节点。
如需扩缩现有集群中的节点池,请完成以下步骤:
控制台
- 在信息中心内,选择您要修改的集群所在的项目。
- 在导航菜单中,依次选择 Kubernetes Engine > 集群。
- 选择与节点池关联的集群名称。此时会显示集群详情 页面。
- 点击节点池 标签页。
- 选择要调整大小的节点 池的edit 修改图标。系统会显示修改节点池 提示。
更新节点数 字段,以反映节点池中所需的新节点数。您可以增加或减少节点数,以满足工作负载要求。
点击保存 。
返回到集群的节点池 标签页,并确认调整大小后的节点池的状态为
Ready,且节点数正确。节点池可能需要几分钟时间才能扩缩到您指定的数量。
API
使用交互式编辑器通过 kubectl CLI 打开
Cluster自定义资源规范:kubectl edit clusters.cluster.gdc.goog/KUBERNETES_CLUSTER_NAME \ -n KUBERNETES_CLUSTER_NAMESPACE \ --kubeconfig MANAGEMENT_API_SERVER替换以下内容:
KUBERNETES_CLUSTER_NAME:托管节点池的集群的名称。KUBERNETES_CLUSTER_NAMESPACE:集群的命名空间。对于共享集群,请使用platform命名空间。对于标准集群,请使用集群的项目命名空间。MANAGEMENT_API_SERVER:托管 Kubernetes 集群的可用区级 API 服务器的 kubeconfig 路径。
更新要调整大小的节点池的
nodeCount字段:nodePools: # Several lines of code are omitted here. - machineTypeName: n2-standard-2-gdc name: nodepool-1 nodeCount: NUMBER_OF_WORKER_NODES将
NUMBER_OF_WORKER_NODES替换为要在节点池中预配的更新后的工作器节点数。保存文件并退出编辑器。
通过检查节点池的配置来验证节点伸缩是否已完成:
kubectl get clusters.cluster.gdc.goog/KUBERNETES_CLUSTER_NAME \ -n KUBERNETES_CLUSTER_NAMESPACE -o json \ --kubeconfig MANAGEMENT_API_SERVER | jq .status.workerNodePoolStatuses确认
readyNodes数量反映了您为节点池设置的节点数。节点池可能需要几分钟时间才能扩缩到您指定的数量。
删除节点池
如果删除节点池,则节点及指向节点的路由也将随之删除。这些节点会逐出并重新调度在其上运行的所有 pod。如果这些 pod 具有特定的节点选择器,且集群中的其他节点均不符合条件,则这些 pod 可能仍处于无法调度的状态。
在删除节点池之前,请确保您至少有三个工作器节点,以确保集群有足够的计算空间来有效运行。
如需删除节点池,请完成以下步骤:
控制台
在导航菜单中,依次选择 Kubernetes Engine > 集群。
点击托管要删除的节点池的集群。
选择节点池 。
点击要删除的节点 池旁边的“删除”图标 delete 。
API
使用交互式编辑器通过 kubectl CLI 打开
Cluster自定义资源规范:kubectl edit clusters.cluster.gdc.goog/KUBERNETES_CLUSTER_NAME \ -n KUBERNETES_CLUSTER_NAMESPACE \ --kubeconfig MANAGEMENT_API_SERVER替换以下内容:
KUBERNETES_CLUSTER_NAME:集群的名称。KUBERNETES_CLUSTER_NAMESPACE:集群的命名空间。对于共享集群,请使用platform命名空间。对于标准集群,请使用集群的项目命名空间。MANAGEMENT_API_SERVER:托管 Kubernetes 集群的可用区级 API 服务器的 kubeconfig 路径。
从
nodePools部分中移除节点池条目。例如,在以下代码段中,您必须移除machineTypeName、name和nodeCount字段:nodePools: # Several lines of code are omitted here. - machineTypeName: n2-standard-2-gdc name: nodepool-1 nodeCount: 3请务必移除要删除的节点池的所有字段。
保存文件并退出编辑器。