第 2 章 为用户工作负载监控配置性能和可扩展性
您可以配置监控堆栈来优化集群的性能和扩展。以下文档提供了有关如何分发监控组件的信息,并控制监控堆栈对 CPU 和内存资源的影响。
2.1. 控制监控组件的放置和分发 复制链接链接已复制到粘贴板!
您可以将监控堆栈组件移到特定的节点上:
-
使用带有标记节点的
nodeSelector约束,将任何监控堆栈组件移到特定的节点上。 - 分配容限以启用将组件移到污点节点。
通过这样做,您可以控制集群中监控组件的放置和分发。
通过控制监控组件的放置和分发,您可以根据特定要求或策略优化系统资源使用、提高性能和隔离工作负载。
2.1.1. 将监控组件移到其他节点 复制链接链接已复制到粘贴板!
您可以将监控用户定义的项目的工作负载的任何组件移到特定的 worker 节点。
不允许组件移到控制平面或基础架构节点。
先决条件
-
您可以使用具有
cluster-admin集群角色或具有openshift-user-workload-monitoring项目中的user-workload-monitoring-config-edit角色的用户访问集群。 - 集群管理员为用户定义的项目启用了监控。
-
已安装 OpenShift CLI(
oc)。
流程
如果您还没有这样做,请在要运行监控组件的节点中添加标签:
$ oc label nodes <node_name> <node_label>1 - 1
- 将
<node_name>替换为您要添加标签的节点的名称。将<node_label>替换为所需标签的名称。
在
openshift-user-workload-monitoring项目中编辑user-workload-monitoring-configConfigMap对象:$ 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>:1 nodeSelector: <node_label_1>2 <node_label_2>3 # ...注意如果在配置
nodeSelector约束后监控组件仍然处于Pending状态,请检查 Pod 事件中与污点和容限相关的错误。- 保存文件以使改变生效。新配置中指定的组件会自动移到新节点上,受新配置影响的 pod 会被重新部署。
2.1.2. 为监控组件分配容忍(tolerations) 复制链接链接已复制到粘贴板!
您可以为监控用户定义的项目的组件分配容限,以便将其移到污点的 worker 节点。在控制平面或基础架构节点上不允许调度。
先决条件
-
您可以使用具有
cluster-admin集群角色的用户访问集群,也可以使用在openshift-user-workload-monitoring项目中具有user-workload-monitoring-config-edit角色的用户访问集群。 - 集群管理员为用户定义的项目启用了监控。
-
已安装 OpenShift CLI(
oc)。
流程
编辑
openshift-user-workload-monitoring项目中的user-workload-monitoring-config配置映射:$ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config为组件指定
tolerations:apiVersion: v1 kind: ConfigMap metadata: name: user-workload-monitoring-config namespace: openshift-user-workload-monitoring data: config.yaml: | <component>: tolerations: <toleration_specification>相应地替换
<component>和<toleration_specification>。例如,
oc adm taint nodes node1 key1=value1:NoSchedule会将一个键为key1且值为value1的污点添加到node1。这会防止监控组件在node1上部署 Pod,除非为该污点配置了容限。以下示例将thanosRuler组件配置为容许示例污点:apiVersion: v1 kind: ConfigMap metadata: name: user-workload-monitoring-config namespace: openshift-user-workload-monitoring data: config.yaml: | thanosRuler: tolerations: - key: "key1" operator: "Equal" value: "value1" effect: "NoSchedule"- 保存文件以使改变生效。受新配置影响的 Pod 会自动重新部署。