5.3. 为 Thanos Ruler 设置 pod 拓扑分布限制
对于用户定义的监控,您可以为 Thanos Ruler 设置 pod 拓扑分布限制,以微调如何在区调度到节点的 pod 副本。这有助于确保 Thanos Ruler pod 具有高可用性并更有效地运行,因为工作负载分散在不同的数据中心或分级基础架构区中。
您可以在 user-workload-monitoring-config
配置映射中为 Thanos Ruler 配置 pod 拓扑分布限制。
先决条件
- 集群管理员为用户定义的项目启用了监控。
-
您可以使用具有
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
在
data/config.yaml/thanosRuler
下添加以下设置的值来配置 pod 拓扑分布限制:apiVersion: v1 kind: ConfigMap metadata: name: user-workload-monitoring-config namespace: openshift-user-workload-monitoring data: config.yaml: | thanosRuler: topologySpreadConstraints: - maxSkew: 1 1 topologyKey: monitoring 2 whenUnsatisfiable: ScheduleAnyway 3 labelSelector: matchLabels: 4 app.kubernetes.io/name: thanos-ruler
- 1
- 为
maxSkew
指定数字值,它定义了允许不均匀分布 pod 的程度。此字段是必需的,值必须大于零。指定的值会根据您为whenUnsatisfiable
指定的值的不同而有所不同。 - 2
- 为
topologyKey
指定节点标签键。此字段是必需的。带有具有此键和相同值标签的节点被视为在同一拓扑中。调度程序会尝试将大量 pod 放置到每个域中。 - 3
- 为
whenUnsatisfiable
指定一个值。此字段是必需的。可用选项包括DoNotSchedule
和ScheduleAnyway
。如果您希望maxSkew
值定义目标拓扑和全局最小值中匹配 pod 数量之间允许的最大值,则指定DoNotSchedule
。如果您希望调度程序仍然调度 pod,但为可能降低 skew 的节点赋予更高的优先级,请指定ScheduleAnyway
。 - 4
- 为
matchLabels
指定一个值。这个值用于标识要应用约束的匹配 pod 的集合。
保存文件以自动应用更改。
警告当您将更改保存到
user-workload-monitoring-config
配置映射时,可能会重新部署openshift-user-workload-monitoring
项目中的 Pod 和其他资源。该项目中正在运行的监控进程可能会重启。