3.4. 使用节点选择器移动监控组件


通过将 nodeSelector 约束与标记的节点搭配使用,您可以将任何监控堆栈组件移到特定的节点上。通过这样做,您可以控制集群中监控组件的放置和分发。

通过控制监控组件的放置和分发,您可以根据特定要求或策略优化系统资源使用、提高性能和隔离工作负载。

3.4.1. 节点选择器与其他约束一起使用

如果使用节点选择器约束移动监控组件,请注意集群可能存在其他限制来控制 pod 调度:

  • 拓扑分布约束可能处于放置状态来控制 pod 放置。
  • Prometheus、Thanos Querier、Alertmanager 和其他监控组件会放置硬反关联性规则,以确保这些组件的多个 pod 始终分散到不同的节点上,因此始终具有高可用性。

将 pod 调度到节点时,pod 调度程序会在决定 pod 放置时尝试满足所有现有的限制。也就是说,当 pod 调度程序决定将哪些 pod 放置到哪些节点上时,所有约束都会编译。

因此,如果您配置节点选择器约束,但无法满足现有的约束,pod 调度程序无法与所有约束匹配,也不会调度 pod 放置到节点上。

为保持监控组件的弹性和高可用性,请确保有足够的节点可用,并在配置节点选择器约束以移动组件时匹配所有约束。

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

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

前提条件

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

流程

  1. 如果您还没有这样做,请在要运行监控组件的节点中添加标签:

    $ oc label nodes <node-name> <node-label>
  2. 编辑 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>: 1
            nodeSelector:
              <node-label-1> 2
              <node-label-2> 3
              <...>
      1
      <component> 替换为适当的监控堆栈组件名称。
      2
      <node-label-1> 替换为添加到节点的标签。
      3
      可选:指定附加标签。如果您指定了额外的标签,则组件的 pod 仅调度到包含所有指定标签的节点上。
      注意

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

  3. 保存文件以使改变生效。新配置中指定的组件会自动移到新节点上,受新配置影响的 pod 会被重新部署。

其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.