6.8. 使用 Node Maintenance Operator 将节点置于维护模式


您可以使用 Node Maintenance Operator 将节点置于维护模式。这是独立于 OpenShift Virtualization 安装的节点维护 Operator 的独立版本。

注意

如果已安装 OpenShift Virtualization,则必须使用与之捆绑的 Node Maintenance Operator。

6.8.1. 关于 Node Maintenance Operator

您可以使用 oc adm 实用程序或使用 NodeMaintenance 自定义资源(CR)将节点置于维护模式。

Node Maintenance Operator 监视是否有新的或删除的 NodeMaintenance CR。当检测到新的 NodeMaintenance CR 时,不会调度新的工作负载,并且该节点从集群的其余部分中分离。所有可被驱除的 pod 都会从节点上驱除。删除 NodeMaintenance CR 时,CR 中引用的节点将可用于新工作负载。

注意

使用 NodeMaintenance CR 进行节点维护任务可实现与 oc adm cordonoc adm drain 命令相同的结果,使用标准的 OpenShift Container Platform CR 处理。

6.8.2. 维护裸机节点

在裸机基础架构上部署 OpenShift Container Platform 时,与在云基础架构上部署相比,还需要考虑其他注意事项。与云环境不同,集群节点被视为临时的,重新置备裸机节点需要大量时间和精力来进行维护任务。

当因为内核错误或 NIC 卡硬件故障造成裸机节点失败时,故障节点上的工作负载需要在集群中的另一个节点上重启,同时问题节点被修复或替换。节点维护模式允许集群管理员安全关闭节点,将工作负载移到集群的其它部分,并确保工作负载不会中断。详细进度和节点状态详情会在维护过程中提供。

6.8.3. 安装 Node Maintenance Operator

您可以使用 Web 控制台或 OpenShift CLI(oc)安装 Node Maintenance Operator。

6.8.3.1. 使用 Web 控制台安装 Node Maintenance Operator

您可以使用 OpenShift Container Platform Web 控制台安装 Node Maintenance Operator。

先决条件

  • 以具有 cluster-admin 特权的用户身份登录。

流程

  1. 在 OpenShift Container Platform Web 控制台中导航至 Operators OperatorHub
  2. 搜索 Node Maintenance Operator,然后点 Install
  3. 保留安装模式命名空间的默认选择,以确保将 Operator 安装到 openshift-operators 命名空间中。
  4. Install

验证

确认安装成功:

  1. 进入到 Operators Installed Operators 页面。
  2. 检查 Operator 是否安装在 openshift-operators 命名空间中,其状态是否为 Succeeded

如果 Operator 没有成功安装:

  1. 导航到 Operators Installed Operators 页面,并检查 Status 列中是否有任何错误或故障。
  2. 导航到 Workloads Pods 页面,并检查 openshift-operators 项目中报告问题的 pod 的日志。

6.8.3.2. 使用 CLI 安装 Node Maintenance Operator

您可以使用 OpenShift CLI(oc)安装 Node Maintenance Operator。

您可以在自己的命名空间中或 openshift-operators 命名空间中安装 Node Maintenance Operator。

要在您自己的命名空间中安装 Operator,请按照以下步骤执行。

要在 openshift-operators 命名空间中安装 Operator,请跳至步骤 3,因为需要新的 Namespace 自定义资源(CR)和 OperatorGroup CR 的步骤。

先决条件

  • 安装 OpenShift CLI(oc)。
  • 以具有 cluster-admin 特权的用户身份登录。

流程

  1. 为 Node Maintenance Operator 创建一个 Namespace CR:

    1. 定义 Namespace CR 并保存 YAML 文件,如 node-maintenance-namespace.yaml

      apiVersion: v1
      kind: Namespace
      metadata:
        name: nmo-test
    2. 要创建 Namespace CR,请运行以下命令:

      $ oc create -f node-maintenance-namespace.yaml
  2. 创建 OperatorGroup CR:

    1. 定义 OperatorGroup CR 并保存 YAML 文件,如 node-maintenance-operator-group.yaml

      apiVersion: operators.coreos.com/v1
      kind: OperatorGroup
      metadata:
        name: node-maintenance-operator
        namespace: nmo-test
    2. 要创建 OperatorGroup CR,请运行以下命令:

      $ oc create -f node-maintenance-operator-group.yaml
  3. 创建一个 Subscription CR:

    1. 定义 Subscription CR,并保存 YAML 文件,如 node-maintenance-subscription.yaml

      apiVersion: operators.coreos.com/v1alpha1
      kind: Subscription
      metadata:
        name: node-maintenance-operator
        namespace: nmo-test 1
      spec:
        channel: stable
        InstallPlaneApproval: Automatic
        name: node-maintenance-operator
        source: redhat-operators
        sourceNamespace: openshift-marketplace
        StartingCSV: node-maintenance-operator.v4.10.0
      1
      指定您要安装 Node Maintenance Operator 的命名空间
      重要

      要在 openshift-operators 命名空间中安装 Node Maintenance Operator,请在 Subscription CR 中指定 openshift-operators

    2. 要创建 Subscription CR,请运行以下命令:

      $ oc create -f node-maintenance-subscription.yaml

验证

  1. 检查 CSV 资源来验证安装是否成功:

    $ oc get csv -n openshift-operators

    输出示例

    NAME                               DISPLAY                     VERSION   REPLACES  PHASE
    node-maintenance-operator.v4.10    Node Maintenance Operator   4.10                Succeeded

  2. 验证 Node Maintenance Operator 是否正在运行:

    $ oc get deploy -n openshift-operators

    输出示例

    NAME                                           READY   UP-TO-DATE   AVAILABLE   AGE
    node-maintenance-operator-controller-manager   1/1     1            1           10d

受限网络环境中支持 Node Maintenance Operator。如需更多信息,请参阅在受限网络中使用 Operator Lifecycle Manager

6.8.4. 将节点设置为维护模式

您可以通过 web 控制台或使用 NodeMaintenance CR 在 CLI 中将节点置于维护模式。

6.8.4.1. 使用 Web 控制台将节点设置为维护模式

要将节点设置为维护模式,您可以使用 Web 控制台创建 NodeMaintenance 自定义资源(CR)。

先决条件

  • 以具有 cluster-admin 特权的用户身份登录。
  • OperatorHub 安装 Node Maintenance Operator。

流程

  1. 从 Web 控制台中的 Administrator 视角,导航到 Operators Installed Operators
  2. 从 Operator 列表中选择 Node Maintenance Operator。
  3. Node Maintenance 选项卡中,点 Create NodeMaintenance
  4. Create NodeMaintenance 页面中,选择 Form viewYAML 视图来 配置 NodeMaintenance CR。
  5. 要应用您配置的 NodeMaintenance CR,请点击 Create

验证

Node Maintenance 选项卡中,检查 Status 列并验证其状态是否为 Succeeded

6.8.4.2. 使用 CLI 将节点设置为维护模式

您可以使用 NodeMaintenance 自定义资源(CR)将节点置于维护模式。应用 NodeMaintenance CR 时,所有允许的 pod 都会被驱除,且节点不可调度。被驱除的 pod 会被放入到集群中的另一节点中。

先决条件

  • 安装 OpenShift Container Platform CLI oc
  • 以具有 cluster-admin 权限的用户身份登录集群。

流程

  1. 创建以下 NodeMaintenance CR,并将文件保存为 nodemaintenance-cr.yaml

    apiVersion: nodemaintenance.medik8s.io/v1beta1
    kind: NodeMaintenance
    metadata:
      name: nodemaintenance-cr  1
    spec:
      nodeName: node-1.example.com 2
      reason: "NIC replacement" 3
    1
    节点维护 CR 的名称。
    2
    要置于维护模式的节点名称。
    3
    有关维护原因的纯文本描述。
  2. 运行以下命令来应用节点维护 CR:

    $ oc apply -f nodemaintenance-cr.yaml
  3. 运行以下命令,将 <node-name> 替换为节点的名称来检查维护任务的进度;例如 node-1.example.com

    $ oc describe node node-1.example.com

    输出示例

    Events:
      Type     Reason                     Age                   From     Message
      ----     ------                     ----                  ----     -------
      Normal   NodeNotSchedulable         61m                   kubelet  Node node-1.example.com status is now: NodeNotSchedulable

6.8.4.2.1. 检查当前 NodeMaintenance CR 任务的状态

您可以检查当前 NodeMaintenance CR 任务的状态。

先决条件

  • 安装 OpenShift Container Platform CLI oc
  • 以具有 cluster-admin 权限的用户身份登录。

流程

  • 运行以下命令,检查当前节点维护任务的状态,如 NodeMaintenance CR 或 nm 对象:

    $ oc get nm -o yaml

    输出示例

    apiVersion: v1
    items:
    - apiVersion: nodemaintenance.medik8s.io/v1beta1
      kind: NodeMaintenance
      metadata:
    ...
      spec:
        nodeName: node-1.example.com
        reason: Node maintenance
      status:
        evictionPods: 3   1
        lastError: "Last failure message" 2
        phase: Succeeded
        totalpods: 5 3
    ...

    1
    调度用于驱除的 pod 数量。
    2
    最新的驱除错误(若有)。
    3
    节点进入维护模式前的 pod 总数。

6.8.5. 从维护模式恢复节点

您可以通过 CLI 或使用 NodeMaintenance CR 从维护模式恢复节点。恢复节点会使节点退出维护模式,并使其可再次调度。

6.8.5.1. 使用 Web 控制台从维护模式恢复节点

要从维护模式恢复节点,您可以使用 Web 控制台删除 NodeMaintenance 自定义资源(CR)。

先决条件

  • 以具有 cluster-admin 特权的用户身份登录。
  • OperatorHub 安装 Node Maintenance Operator。

流程

  1. 从 Web 控制台中的 Administrator 视角,导航到 Operators Installed Operators
  2. 从 Operator 列表中选择 Node Maintenance Operator。
  3. Node Maintenance 选项卡中,选择您要删除的 NodeMaintenance CR。
  4. 点击节点末尾的 Options 菜单 kebab 并选择 Delete NodeMaintenance

验证

  1. 在 OpenShift Container Platform 控制台中,点 Compute Nodes
  2. 检查您删除 NodeMaintenance CR 的节点的 Status 列,并验证其状态是否为 Ready

6.8.5.2. 使用 CLI 从维护模式恢复节点

您可以通过删除 NodeMaintenance CR,从 NodeMaintenance CR 启动的维护模式恢复节点。

先决条件

  • 安装 OpenShift Container Platform CLI oc
  • 以具有 cluster-admin 权限的用户身份登录集群。

流程

  • 节点维护任务完成后,删除活跃的 NodeMaintenance CR:

    $ oc delete -f nodemaintenance-cr.yaml

    输出示例

    nodemaintenance.nodemaintenance.medik8s.io "maintenance-example" deleted

6.8.6. 收集 Node Maintenance Operator 的数据

要收集有关 Node Maintenance Operator 的调试信息,请使用 must-gather 工具。有关 Node Maintenance Operator 的 must-gather 镜像的信息,请参阅收集有关特定功能的数据

6.8.7. 其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.