在集群中添加节点或者从中移除节点

在 Anthos clusters on Bare Metal 中,您可以通过修改集群的节点池定义来添加或移除集群中的节点。您可以使用 kubectl 命令更改这些定义。

Anthos clusters on Bare Metal 中有三种不同类型的节点池:控制层面、负载平衡器和工作器节点池。您可以通过关联的集群资源中的定义修改控制层面和负载平衡器节点,而直接修改工作器节点池定义。

查看节点状态

您可以使用 kubectl get 命令查看节点及其各自的节点池的状态。

例如,以下命令会显示集群命名空间 my-cluster 中的节点池的状态:

 kubectl -n my-cluster get nodepools.baremetal.cluster.gke.io

系统会返回类似于以下内容的结果:

  NAME                    READY   RECONCILING   STALLED   UNDERMAINTENANCE   UNKNOWN
  my-cluster              3       0             0         0                  0
  my-cluster-lb           2       0             0         0                  0
  np1                     3       0             0         0                  0

如需详细了解如何诊断集群,请参阅诊断和重置集群

更改控制层面节点

您可以通过在集群资源定义中修改集群的 spec.controlPlane.nodePoolSpec.nodes 地址数组来添加或移除控制层面节点。

请注意,直接修改控制层面节点池不起作用,因为集群规范是控制层面节点池的权威定义。

在高可用性 (HA) 配置中,需要设置奇数个控制层面节点池(三个或更多)来建立仲裁机制,以确保在某个控制层面发生故障时其他控制层面能够取而代之。如果在为执行维护或替换操作而添加或移除节点时暂时存在偶数个节点,则只要您有足够的仲裁机制,您的部署就会保持高可用性。

更改负载平衡器节点

您可以通过在集群配置文件中修改集群的 spec.loadBalancer.nodePoolSpec.nodes 地址数组,添加或移除集群的负载平衡器节点池。

更改工作器节点

您可以使用 kubectl 命令直接添加或移除工作器节点。工作器节点池必须至少包含一个所需节点。

在以下示例中,命令会删除名为 np1 的节点池,其中集群命名空间的变量为 my-cluster

  kubectl -n my-cluster delete nodepool np1
 

同样,您可以通过修改 spec.nodes 地址数组来调整节点池的大小。

请注意,从集群移除节点时,系统会首先排空其中的任何 Pod。如果无法在其他节点上重新调度 pod,则节点不会从集群中移除。移除节点的操作只会从控制层面中移除节点;节点的内容不会重置。

以下 kubectl edit 命令允许您修改集群命名空间 my-cluster 和节点池 np1,然后提交相应的更改:

  kubectl -n my-cluster edit nodepool np1