5.3.4. 将监控组件移到其他节点
您可以将监控用户定义的项目工作负载的任何组件移到特定的 worker 节点。不允许将组件移到 control plane 或基础架构节点。
先决条件
-
您可以使用具有
dedicated-admin
角色的用户访问集群。 -
您已创建了
user-workload-monitoring-config
ConfigMap
对象。 -
已安装 OpenShift CLI(
oc
)。
流程
要移动用于监控用户定义的项目的组件,请编辑
ConfigMap
对象:在
openshift-user-workload-monitoring
项目中编辑user-workload-monitoring-config
ConfigMap
对象:$ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
在
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: worker1
、nodename: worker2
和nodename: 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
保存文件以使改变生效。受新配置影响的组件会自动移到新节点上。
警告一旦将更改保存到监控配置映射,可能会重新部署相关项目中的 Pod 和其他资源。该项目中正在运行的监控进程也可能被重启。
其他资源
- 了解如何更新节点上的标签
- 使用节点选择器将 pod 放置到特定节点
-
参阅 Kubernetes 文档来详细了解
nodeSelector
约束