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

在 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

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

更改节点

大多数节点更改在集群配置文件中指定,然后配置文件被应用于集群。我们建议您将集群配置文件作为更新集群的主要来源。最佳做法是将配置文件存储在版本控制系统中以跟踪更改,用于排查问题。请注意,只有独立集群才支持 bmctl update 命令。对于管理员集群、用户集群和混合集群,请使用 kubectl apply 和节点池更改来更新集群。

Anthos clusters on Bare Metal 配置文件包含一个带有凭据信息的标头部分。凭据条目和配置文件的其余部分都是有效的 YAML,但凭据条目对集群资源无效。请在使用 kubectl apply 之前移除凭据密钥路径条目,例如 gcrKeyPathsshPrivateKeyPath。使用 bmctl update credentials 获取凭据更新。

或者,您可以使用 kubectl edit 直接修改集群资源。例如:

  kubectl edit cluster -n CLUSTER_NAMESPACE CLUSTER_NAME

以下各部分介绍了更新特定节点类型的重要区别。

控制平面和负载均衡器节点

Anthos clusters on Bare Metal 的控制平面和负载均衡器节点池规范是特殊的。这些规范声明和控制关键集群资源。这些资源的规范来源是它们在集群配置文件中的相应部分:

  • spec.controlPlane.nodePoolSpec
  • spec.LoadBalancer.nodePoolSpec

您可以通过在集群配置文件的相应部分中修改 nodes 下的地址数组来添加或移除控制平面或负载均衡器节点。

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

工作器节点

您可以使用 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