将节点置于维护模式

如果您需要修复或维护节点,则应首先将节点置于维护模式。将节点置于维护模式会安全地排空其 pod/工作负载,并将节点排除在 pod 调度外。在维护模式下,您可以在节点上运行,而不会有中断 Pod 流量的风险。

选择要在集群配置文件的 maintenanceBlocks 下,通过指定选择节点的 IP 地址范围,选择要进入维护模式的节点。您选择的节点必须处于就绪状态且在集群中正常运行。

如需将节点置于维护模式,请执行以下操作:

  1. 修改集群配置文件以选择要置于维护模式的节点。

    您可以使用自己选择的编辑器修改配置文件,也可以运行以下命令直接修改集群自定义资源:

    kubectl -n CLUSTER_NAMESPACE edit cluster CLUSTER_NAME

    替换以下内容:

    • CLUSTER_NAMESPACE:集群的命名空间。
    • CLUSTER_NAME:集群的名称。
  2. maintenanceBlocks 部分添加到集群配置文件,以指定要置于维护模式的节点的单个 IP 地址或地址范围。

    以下示例展示了如何通过指定 IP 地址范围来选择多个节点:

    metadata:
      name: my-cluster
      namespace: cluster-my-cluster
    spec:
      maintenanceBlocks:
        cidrBlocks:
        - 172.16.128.1-172.16.128.64
    
  3. 保存并应用更新后的集群配置。

    Anthos clusters on Bare Metal 开始将节点置于维护模式。

  4. 运行以下命令以获取集群中节点的状态:

    kubectl get nodes -n CLUSTER_NAME

    响应如下所示:

    NAME                              STATUS                     ROLES    AGE     VERSION
    user-anthos-baremetal-01          Ready                      master   2d22h   v1.17.8-gke.16
    user-anthos-baremetal-04          Ready                      <none>   2d22h   v1.17.8-gke.16
    user-anthos-baremetal-05          Ready,SchedulingDisabled   <none>   2d22h   v1.17.8-gke.16
    user-anthos-baremetal-06          Ready                      <none>   2d22h   v1.17.8-gke.16
    

    状态为 SchedulingDisabled 表示节点处于维护模式。

  5. 运行以下命令以获取维护模式下的节点数:

    kubectl get nodepools

    响应应类似于以下输出:

    NAME   READY   RECONCILING   STALLED   UNDERMAINTENANCE   UNKNOWN
    np1    3       0             0         1                  0
    

    此示例中的此 UNDERMAINTENANCE 列显示了一个节点处于维护模式。

    Anthos clusters on Bare Metal 在进入维护模式时,还会将以下污点添加到节点:

    • baremetal.cluster.gke.io/maintenance:NoExecute
    • baremetal.cluster.gke.io/maintenance:NoSchedule

如需从维护模式中移除节点,请执行以下操作:

  1. 修改集群配置文件以清除要从维护模式中移除的节点。

    您可以使用自己选择的编辑器修改配置文件,也可以运行以下命令直接修改集群自定义资源:

    kubectl -n CLUSTER_NAMESPACE edit cluster CLUSTER_NAME

    替换以下内容:

    • CLUSTER_NAMESPACE:集群的命名空间。
    • CLUSTER_NAME:集群的名称。
  2. 修改 IP 地址以从维护模式中移除特定节点,或者移除 maintenanceBlocks 部分从维护模式中移除所有操作。

  3. 保存并应用更新后的集群配置。

  4. 使用 kubectl 命令检查节点的状态。