调度配置

调度策略允许实例运行在指定节点上,并有效防止其他应用被调度到这些节点,确保实例的高可用性。

场景概述

  • PostgreSQL部署在专属业务集群中,客户希望不同的PostgreSQL实例运行在不同节点上,便于维护和快速定位故障。

  • PostgreSQL部署在现有业务集群中,客户希望PostgreSQL实例运行在指定节点上,同时防止其他应用被调度到相同节点。

以上场景都可以通过在实例创建页面的调度配置部分配置节点标签Pod容忍来实现。

本节演示如何让PostgreSQL实例运行在不同的指定节点上。指定节点如下:

组件指定节点
PostgreSQL192.168.100.103 192.168.100.104 192.168.100.105

前提条件

  1. 平台管理员需要在指定节点上更新节点标签,以便中间件能根据标签调度到指定节点。

  2. 平台管理员需要在指定节点上设置污点,确保中间件能根据容忍调度到被污点标记的节点,同时防止其他应用被调度到这些节点。

您可以根据实际需求配置节点和污点。

平台管理员已在平台中心设置节点污点和标签,配置如下:

节点节点标签节点污点
192.168.100.103 192.168.100.104 192.168.100.105keypostgres=valuepostgreskeypostgres=valuepostgres

配置说明

  • 污点(Taint): 节点上的键值属性,用于阻止Pod被调度到该节点,除非Pod有对应的容忍。

  • 容忍(Toleration): Pod上的键值属性,允许Pod容忍特定的节点污点,确保Pod只被调度到它能容忍的节点上。

污点和容忍支持effect参数,语法格式为key=value:effecteffect定义了Pod的排斥级别,包含三种类型:

效果类型描述
NoSchedule不容忍此污点的新Pod不会被调度到节点上。这是严格约束,但节点上现有Pod不受影响。
PreferNoScheduleNoSchedule的宽松版本,不容忍此污点的新Pod应尽量避免调度到该节点,但如果无其他可用节点仍可能被调度。现有Pod不受影响。
NoExecute不容忍此污点的新Pod不会被调度到节点上。此外,如果节点污点或Pod容忍发生变化导致现有Pod不再满足污点-容忍条件,该Pod将被驱逐。

在Pod上定义容忍时,支持两种运算符:

运算符描述
EqualPod的容忍必须与节点污点的key、value和effect完全匹配。
ExistsPod的容忍必须与节点污点的key和effect匹配,value字段可以为空。

配置步骤

创建带调度配置的PostgreSQL实例

  1. 在左侧导航面板中,点击PostgreSQL

  2. 点击创建PostgreSQL实例

  3. 完成参数配置。在调度配置部分,根据指定节点选择节点标签和污点。

  4. 点击创建。PostgreSQL实例Pod将被调度到节点192.168.100.103、192.168.100.104和192.168.100.105上。

验证

您可以导航到容器平台 > 计算组件 > 容器组,验证PostgreSQL实例是否运行在指定节点上。