调度策略允许实例运行在指定节点上,并有效防止其他应用被调度到这些节点,确保实例的高可用性。
PostgreSQL部署在专属业务集群中,客户希望不同的PostgreSQL实例运行在不同节点上,便于维护和快速定位故障。
PostgreSQL部署在现有业务集群中,客户希望PostgreSQL实例运行在指定节点上,同时防止其他应用被调度到相同节点。
以上场景都可以通过在实例创建页面的调度配置部分配置节点标签和Pod容忍来实现。
本节演示如何让PostgreSQL实例运行在不同的指定节点上。指定节点如下:
组件 | 指定节点 |
---|---|
PostgreSQL | 192.168.100.103 192.168.100.104 192.168.100.105 |
平台管理员需要在指定节点上更新节点标签,以便中间件能根据标签调度到指定节点。
平台管理员需要在指定节点上设置污点,确保中间件能根据容忍调度到被污点标记的节点,同时防止其他应用被调度到这些节点。
您可以根据实际需求配置节点和污点。
平台管理员已在平台中心设置节点污点和标签,配置如下:
节点 | 节点标签 | 节点污点 |
---|---|---|
192.168.100.103 192.168.100.104 192.168.100.105 | keypostgres=valuepostgres | keypostgres=valuepostgres |
污点(Taint): 节点上的键值属性,用于阻止Pod被调度到该节点,除非Pod有对应的容忍。
容忍(Toleration): Pod上的键值属性,允许Pod容忍特定的节点污点,确保Pod只被调度到它能容忍的节点上。
污点和容忍支持effect
参数,语法格式为key=value:effect
。effect
定义了Pod的排斥级别,包含三种类型:
效果类型 | 描述 |
---|---|
NoSchedule | 不容忍此污点的新Pod不会被调度到节点上。这是严格约束,但节点上现有Pod不受影响。 |
PreferNoSchedule | NoSchedule的宽松版本,不容忍此污点的新Pod应尽量避免调度到该节点,但如果无其他可用节点仍可能被调度。现有Pod不受影响。 |
NoExecute | 不容忍此污点的新Pod不会被调度到节点上。此外,如果节点污点或Pod容忍发生变化导致现有Pod不再满足污点-容忍条件,该Pod将被驱逐。 |
在Pod上定义容忍时,支持两种运算符:
运算符 | 描述 |
---|---|
Equal | Pod的容忍必须与节点污点的key、value和effect完全匹配。 |
Exists | Pod的容忍必须与节点污点的key和effect匹配,value字段可以为空。 |
在左侧导航面板中,点击PostgreSQL。
点击创建PostgreSQL实例。
完成参数配置。在调度配置部分,根据指定节点选择节点标签和污点。
点击创建。PostgreSQL实例Pod将被调度到节点192.168.100.103、192.168.100.104和192.168.100.105上。
您可以导航到容器平台 > 计算组件 > 容器组,验证PostgreSQL实例是否运行在指定节点上。