5.3.4. 将监控组件移到其他节点

您可以将监控用户定义的项目工作负载的任何组件移到特定的 worker 节点。不允许将组件移到 control plane 或基础架构节点。

先决条件

  • 您可以使用具有 dedicated-admin 角色的用户访问集群。
  • 您已创建了 user-workload-monitoring-config ConfigMap 对象。
  • 已安装 OpenShift CLI(oc)。

流程

  1. 要移动用于监控用户定义的项目的组件,请编辑 ConfigMap 对象:

    1. openshift-user-workload-monitoring 项目中编辑 user-workload-monitoring-config ConfigMap 对象:

      $ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
    2. data.config.yaml 下为组件指定 nodeSelector 约束:

      apiVersion: v1
      kind: ConfigMap
      metadata:
        name: user-workload-monitoring-config
        namespace: openshift-user-workload-monitoring
      data:
        config.yaml: |
          <component>:
            nodeSelector:
              <node_key>: <node_value>
              <node_key>: <node_value>
              <...>

      相应地替换 <component>,并将 <node_key>: <node_value> 替换为用于指定目标节点的键值对映射。通常只使用一个键值对。

      组件只能在以各个指定键值对作为标签的节点上运行。节点也可以有附加标签。

      重要

      许多监控组件都通过在集群中的不同节点间使用多个 Pod 来部署,以维持高可用性。将监控组件移到带标签的节点时,确保有足够的匹配节点来保持组件的弹性。如果只指定了一个标签,请确保有足够的节点包含该标签,以便将该组件的所有 Pod 分布到不同的节点。另外,您还可以指定多个标签,每个都与单个节点相关。

      注意

      如果在配置 nodeSelector 约束后监控组件仍然处于 Pending 状态,请检查 Pod 日志中与污点和容限相关的错误。

      例如,要将监控用户定义的项目的组件移到带有 nodename: worker1nodename: worker2nodename: worker2 标签的特定 worker 节点,请使用:

      apiVersion: v1
      kind: ConfigMap
      metadata:
        name: user-workload-monitoring-config
        namespace: openshift-user-workload-monitoring
      data:
        config.yaml: |
          prometheusOperator:
            nodeSelector:
              nodename: worker1
          prometheus:
            nodeSelector:
              nodename: worker1
              nodename: worker2
          thanosRuler:
            nodeSelector:
              nodename: worker1
              nodename: worker2
  2. 保存文件以使改变生效。受新配置影响的组件会自动移到新节点上。

    警告

    一旦将更改保存到监控配置映射,可能会重新部署相关项目中的 Pod 和其他资源。该项目中正在运行的监控进程也可能被重启。