创建用户集群时,您必须配置至少一个节点池,即一组具有相同配置的节点。创建集群后,您可以添加新的节点池、更新节点池设置和删除节点池。
如何创建、更新和删除节点池取决于集群是否由 Anthos On-Prem API 管理。如果满足以下任一条件,则用户集群由 Anthos On-Prem API 管理:
集群是在 Google Cloud 控制台中创建的,该控制台自动将 Anthos On-Prem API 配置为管理集群。
在用户集群上运行命令
gkectl enroll cluster
,该命令将其配置为由 Anthos On-Prem API 管理。
如果用户集群由 Anthos On-Prem API 管理,则您可以使用 Google Cloud 控制台管理节点池。如果用户集群不是由 Anthos On-Prem API 管理,请在管理员工作站的命令行中使用 gkectl
来管理节点池。
添加节点池
如果您在 Google Cloud 控制台中创建了集群,则可以使用 Google Cloud 控制台添加节点池;但是,您需要使用命令行配置以下节点池设置:
- Windows 操作系统映像类型
- vSphere 数据存储区
vSphere 标记 如果要将标记附加到节点池中的所有虚拟机,您的 vCenter 用户帐号必须具有以下 vSphere 标记权限:
- vSphere 标记。分配或取消分配 vSphere 标记
- vSphere 标记。在对象上分配或取消分配 vSphere 标记 (vSphere 7)
在添加其他节点池之前,请验证集群上是否有足够的可用 IP 地址。
控制台
在 Google Cloud 控制台中,转到“Anthos 集群”页面。
选择用户集群所在的 Google Cloud 项目。
在集群列表中,点击集群的名称,然后点击详细信息面板中的查看详细信息。
点击
添加节点池。配置节点池:
- 输入节点池名称。
- 输入池中每个节点的 vCPU 数量(每个用户集群工作器最少 4 个)。
- 输入池中每个节点的内存大小(以兆字节 (MiB) 为单位,每个用户集群工作器节点最少 8192 MiB,并且必须是 4 的倍数)。
- 在节点字段中,输入池中的节点数(最少 3 个)。
选择操作系统映像类型:Ubuntu Containerd、Ubuntu 或 COS。
输入启动磁盘大小(以吉比字节 (GiB) 为单位,默认值为 40 GiB)。
在节点池元数据(可选)部分中,如果您要添加 Kubernetes 标签和污点,请执行以下操作:
- 点击 + 添加 Kubernetes 标签。输入标签的键和值。根据需要重复上述步骤。
- 点击 + 添加污点。输入污点的键、值和效果。根据需要重复上述步骤。
点击创建。
Google Cloud 控制台会显示集群状态:正在更改。点击显示详情,以查看资源状态条件和状态消息。
命令行
-
您必须指定以下字段:
nodePools.[i].name
nodePools[i].cpus
nodePools.[i].memoryMB
nodePools.[i].replicas
以下字段是可选的。如果您未添加
nodePools[i].bootDiskSizeGB
或nodePools[i].osImageType
,则系统会使用默认值。nodePools[i].labels
nodePools[i].taints
nodePools[i].bootDiskSizeGB
nodePools[i].osImageType
nodePools[i].vsphere.datastore
nodePools[i].vsphere.tags
运行以下命令:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
替换以下内容:
将
[ADMIN_CLUSTER_KUBECONFIG]
替换为管理员集群的 kubeconfig 文件的路径。将
[USER_CLUSTER_CONFIG]
替换为用户集群配置文件的路径。
配置示例
以下示例配置中有四个节点池,每个节点池具有不同的特性:
pool-1
:仅指定了所需的最少属性pool-2
:包括vsphere.datastore
和vsphere.tags
pool-3
:包括taints
和labels
pool-4
:包括osImageType
和bootDiskSizeGB
nodePools:
- name: pool-1
cpus: 4
memoryMB: 8192
replicas: 5
- name: pool-2
cpus: 8
memoryMB: 16384
replicas: 3
vsphere:
datastore: my_datastore
tags:
- category: "purpose"
name: "testing"
- name: pool-3
cpus: 4
memoryMB: 8192
replicas: 5
taints:
- key: "example-key"
effect: NoSchedule
labels:
environment: production
app: nginx
- name: pool-4
cpus: 4
memoryMB: 8192
replicas: 5
osImageType: cos
bootDiskSizeGB: 40
更新节点池
您可以使用命令行更新用户集群配置文件的 nodePools
部分中的所有字段。目前,您只能使用 Google Cloud 控制台更新以下节点池字段:
- 副本数量
- 内存
- vCPU 数量
在增加副本数量时,Anthos clusters on VMware 会将所需数量的节点添加到用户集群,并且在减少副本数量时节点会移除。更改节点池的副本数量不会中断工作负载。如果增加副本数量,请确保有可用的 IP 地址。
如果更新任何其他节点池字段,则会触发集群滚动更新。在滚动更新中,Anthos clusters on VMware 会创建新节点,然后删除旧节点。系统会重复此过程,直到所有旧节点都替换为新节点。此过程不会导致停机,但在更新期间集群必须有一个额外的 IP 地址可供使用。
假设节点池在更新结束时将有 N 个节点。那么,您必须至少有 N+1 个 IP 地址可用于该池中的节点。这意味着,如果要通过向一个或多个池添加节点来调整集群大小,则在结束大小调整时,您所拥有的的 IP 地址数量应该至少比集群的所有节点池中的节点总数多出一个。 如需了解详情,请参阅验证是否有足够的可用 IP 地址。
如需更新用户集群上的节点池,请执行以下操作:
控制台
在 Google Cloud 控制台中,转到“Anthos 集群”页面。
选择用户集群所在的 Google Cloud 项目。
在集群列表中,点击集群的名称,然后点击详细信息面板中的查看详细信息。
点击节点标签页。
点击要修改的节点池的名称。
点击要修改的字段旁边的
修改,然后点击完成。点击
以返回到上一页。Google Cloud 控制台会显示集群状态:正在更改。点击显示详情,以查看资源状态条件和状态消息。
命令行
在用户集群配置文件的
nodePools
部分中修改要更改的字段的值。更新集群:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
替换以下内容:
将
[ADMIN_CLUSTER_KUBECONFIG]
替换为管理员集群的 kubeconfig 文件的路径。将
[USER_CLUSTER_CONFIG]
替换为用户集群配置文件的路径。
更新节点池使用的 osImageType
如需更新节点池以使用其他 osImageType
,您必须使用命令行。如需更改节点池使用的 osImageType
,请更新节点池的配置文件(如以下示例所示),然后运行 gkectl update cluster
。
nodePools: - name: np-1 cpus: 4 memoryMB: 8192 replicas: 3 osImageType: ubuntu_containerd
验证您的更改
如需验证节点池是否已创建或更新,请检查集群节点:
控制台
在 Google Cloud 控制台中,转到“Anthos 集群”页面。
选择用户集群所在的 Google Cloud 项目。
在集群列表中,点击集群的名称,然后点击详细信息面板中的查看详细信息。
点击节点标签页。
点击要查看的节点池的名称。
命令行
运行以下命令:
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get nodes -o wide
如果需要还原更改,请修改集群配置文件并运行 gkectl update cluster
。
删除节点池
虽然您可以删除节点池,但用户集群必须至少具有一个节点池。删除节点池会导致系统立即移除池中的节点,无论这些节点是否正在运行工作负载。
要从用户集群中删除节点池,请执行以下操作:
控制台
确保受影响的节点上没有工作负载运行。
在 Google Cloud 控制台中,前往 Anthos 集群页面。
选择用户集群所在的 Google Cloud 项目。
在集群列表中,点击集群的名称,然后点击详细信息面板中的查看详细信息。
点击节点标签页。
点击要删除的节点池的名称。
点击
删除。点击
以返回到上一页。Google Cloud 控制台会显示集群状态:正在更改。点击显示详情,以查看资源状态条件和状态消息。
命令行
确保受影响的节点上没有工作负载运行。
从用户集群配置文件的
nodePools
部分移除其定义。更新集群:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
替换以下内容:
将
[ADMIN_CLUSTER_KUBECONFIG]
替换为管理员集群的 kubeconfig 文件的路径。将
[USER_CLUSTER_CONFIG]
替换为用户集群配置文件的路径。
问题排查
通常,
gkectl update cluster
命令会在失败时提供详细信息。如果命令成功并且您没有看到节点,则可以使用诊断集群问题指南进行问题排查。集群资源可能不足,例如在创建或更新节点池期间缺少可用的 IP 地址。请参阅调整用户集群大小主题,详细了解如何验证是否有可用的 IP 地址。
您还可以查看常规问题排查指南。
卡在
Creating node MachineDeployment(s) in user cluster…
。创建或更新用户集群中的节点池可能需要一些时间。但是,如果等待时间非常长并且您怀疑某些操作可能失败,则可以运行以下命令:
- 运行
kubectl get nodes
以获取节点的状态。 - 对于任何未准备就绪的节点,运行
kubectl describe node NODE_NAME
以获取详细信息。
- 运行