在用户集群中,您可以通过填写 集群配置文件的 nodePools
部分创建一组具有相同配置的节点。然后,您可以管理节点池,而不会影响集群中的其他节点。详细了解节点池。
您还可以更新节点池以使用其他 osImageType
。
准备工作
删除节点池会导致系统立即移除池中的节点,无论这些节点是否正在运行工作负载。
您可以更新 nodePool
部分的 replicas
字段,而不中断工作负载。但是,如果您更新任何其他字段,则池中的节点会被删除并重新创建。
如果要将标记附加到节点池中的所有虚拟机,您的 vCenter 用户帐号必须具有以下 vSphere 标记权限:
- vSphere 标记。分配或取消分配 vSphere 标记
- vSphere 标记。在对象上分配或取消分配 vSphere 标记 (vSphere 7)
更新 nodePool
部分时,Anthos clusters on VMware 会创建一个新节点,然后删除旧节点。它会重复此过程,直至所有旧节点替换为新节点。这意味着集群必须具有在更新期间可用的额外 IP 地址。
假设节点池在更新结束时将有 N 个节点。那么,您必须至少有 N+1 个 IP 地址可用于该池中的节点。这意味着,如果要通过向一个或多个池添加节点来调整集群大小,则在结束大小调整时,您所拥有的的 IP 地址数量应该至少比集群的所有节点池中的节点总数多出一个。 如需了解详情,请参阅验证是否有足够的可用 IP 地址。
填写集群配置文件的 nodePools
部分
对于每个节点池,您必须指定以下字段:
nodePools.[i].name
nodePools[i].cpus
nodePools.[i].memoryMB
nodePools.[i].replicas
以下字段是可选的:
nodePools[i].labels
nodePools[i].taints
nodePools[i].bootDiskSizeGB
nodePools[i].osImageType
nodePools[i].vsphere.datastore
nodePools[i].vsphere.tags
在新集群中创建节点池
在用户集群配置文件中,填写 nodePools
部分,然后创建集群:
gkectl create cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
请替换以下内容:
ADMIN_CLUSTER_KUBECONFIG:管理员集群的 kubeconfig 文件
USER_CLUSTER_CONFIG:用户集群配置文件
更新现有集群中的节点池
在用户集群配置文件中,修改 nodePools
部分,然后更新集群:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
验证您的更改
如需验证节点池是否已创建或更新,请检查集群节点:
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get nodes --output wide
如果需要还原更改,请修改集群配置文件并运行 gkectl update cluster
。
删除节点池
要从用户集群中删除节点池,请执行以下操作:
从用户集群配置文件的
nodePools
部分移除其定义。确保受影响的节点上没有工作负载运行。
更新集群:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config 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
更新节点池使用的 osImageType
您可以更新节点池以使用其他 osImageType
。更新节点池的配置文件(如以下示例所示),然后运行 gkectl update cluster
。
nodePools: - name: np-1 cpus: 4 memoryMB: 8192 replicas: 3 osImageType: ubuntu_containerd
问题排查
通常,
gkectl update cluster
命令会在失败时提供详细信息。如果命令成功并且您没有看到节点,则可以使用诊断集群问题指南进行问题排查。集群资源可能不足,例如在创建或更新节点池期间缺少可用的 IP 地址。请参阅调整用户集群大小主题,详细了解如何验证是否有可用的 IP 地址。
您还可以查看常规问题排查指南。
卡在
Creating node MachineDeployment(s) in user cluster…
。创建或更新用户集群中的节点池可能需要一些时间。但是,如果等待时间非常长并且您怀疑某些操作可能失败,则可以运行以下命令:
- 运行
kubectl get nodes
以获取节点的状态。 - 对于任何未准备就绪的节点,运行
kubectl describe node NODE_NAME
以获取详细信息。
- 运行