在 Anthos clusters on VMware (GKE On-Prem) 中,您可以为集群启用自动节点大小调整功能。大小调整是指调整分配给节点的 CPU 和内存资源。
如果为管理员集群启用了自动节点大小调整功能,则管理员集群中的插件节点将根据管理员集群中的节点总数调整大小。对于每个用户集群,管理员集群中都包含一个或多个控制层面节点。因此,当您创建更多用户集群时,管理员集群中的节点总数会增加,并且管理员集群中的插件节点的大小也会自动增加。
如果为用户集群启用了自动节点大小调整功能,则用户集群的控制层面节点将根据用户集群中的节点数量调整大小。因此,当您向用户集群添加更多工作器节点时,控制层面节点的大小会增加。回顾一下,用户集群的控制层面节点位于管理员集群中。
一个高可用性 (HA) 用户集群在管理员集群中有三个控制层面节点,另一个非高可用性用户集群在管理员集群中有一个控制层面节点。调整某个节点的大小需要重新创建该节点。因此,当调整非高可用性用户集群的控制层面节点的大小时,可能会出现短暂的停机时间。
准备工作
如需预览此自动节点大小调整功能,您需要停用 Dataplane V2。
为管理员集群的插件节点启用节点大小调整功能
在管理员集群配置文件中,将 addonNode.autoResize.enabled
设置为 true
:
addonNode: autoResize: enabled: true
对于新的管理员集群,请按照创建管理员集群(快速入门)或创建管理员集群中的说明进行操作。
对于现有管理员集群:
gkectl update admin --config ADMIN_CLUSTER_CONFIG --kubeconfig ADMIN_CLUSTER_KUBECONFIG
请替换以下内容:
ADMIN_CLUSTER_CONFIG:管理员集群配置文件的路径
ADMIN_CLUSTER_KUBECONFIG:管理员集群 kubeconfig 文件的路径
为用户集群的控制层面节点启用节点大小调整功能
在用户集群配置文件中,将 masterNode.autoResize.enabled
设置为 true
:
masterNode: autoResize: enabled: true
对于新的用户集群,请按照创建用户集群(快速入门)或创建用户集群中的说明进行操作。
对于现有集群:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
请替换以下内容:
ADMIN_CLUSTER_KUBECONFIG:管理员集群 kubeconfig 文件的路径
USER_CLUSTER_CONFIG:用户集群配置文件的路径
为用户集群启用自动节点大小调整功能后,任何尝试通过运行 gkectl update
来更改控制层面节点的 CPU 或内存的操作都将被拒绝。如果您想要使用 gkectl update
来更改用户集群控制层面节点的 CPU 或内存,则必须停用自动节点大小调整功能。
为管理员集群的插件节点停用节点大小调整功能
在管理员集群配置文件中,将 autoRepair.enabled
设置为 false
:
更新集群:
gkectl update admin --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config ADMIN_CLUSTER_CONFIG
为用户集群的控制层面节点停用节点大小调整功能
在用户集群配置文件中,将 autoRepair.enabled
设置为 false
:
更新集群:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
为用户集群停用自动节点大小调整功能后,系统会协调控制层面节点的 CPU 和内存,以匹配用户集群配置文件中指定的 CPU 和内存值。
日志和事件
如需查找自动大小调整功能 Pod 的名称,请执行以下操作:
kubectl --kubeconfig ADMIN_KUBECONFIG describe deployment auto-resize-controller
该 Pod 的名称采用 auto-resize-controller-xxxxx
格式。
如需查看自动大小调整功能 Pod 中的日志,请执行以下操作:
kubectl --kubeconfig ADMIN_KUBECONFIG logs AUTO_RESIZE_POD_NAME
自动大小调整功能控制器会在 MachineDeployment 对象上生成事件,以便您了解与大小调整功能相关的决策和操作。
如需查找 MachineDeployment 对象的名称,请执行以下操作:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get machinedeployments --all-namespaces
如需查看事件,请执行以下操作:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG describe machinedeployment USER_CONTROL_PLANE_NODE_MACHINE_DEPLOYMENT kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG describe machinedeployment ADMIN_ADDON_NODE_MACHINE_DEPLOYMENT