配置调度与差异化
集群调度策略
当前界面支持集群权重和自动均衡两种策略。
通过控制台配置调度策略
- 登录UCS控制台。
- 在创建工作负载时,单击“下一步:调度与差异化”。
- 添加调度策略。
表1 调度策略 策略
描述
集群权重策略
需要您选择集群并配置分发权重,按照集群权重配比分发Pod。
自动均衡策略
按照剩余资源量自动选择集群分发Pod,不需要额外配置。
集群权重的计算方法
计算方法
对于基于集群权重的调度策略,在您设置各个集群的权重后,相应的集群分配Pod数的计算方法如下所述。
- 按照权重计算各个集群的分配Pod数(向下取整)。
- 计算剩余Pod数。
- 若剩余Pod数不为0,则按照集群权重大小排序后再次分配,一次分配一个Pod。排序后,若各个集群设置的权重相同,则会由系统随机选择成员集群进行Pod分配。
计算示例
Pod总数共7个,分配至三个集群member1、member2和member3,设置的集群权重为2 : 1 : 1。
- 计算各集群分配Pod数
member1分配Pod数 = 7 * 2 / 4,向下取整后为3。
member2分配Pod数 = 7 * 1 / 4,向下取整后为1。
member3分配Pod数 = 7 * 1 / 4,向下取整后为1。
也就是说,首次分配的结果为member1分配3个Pod,为member2分配1个Pod,为member3分配1个Pod。
- 计算剩余Pod数
- 按照集群权重大小排序后再次分配
权重排序为member1权重 > member2权重 = member3权重,则再次分配的结果为:member1分配1个Pod,剩余的一个Pod在member2、member3中由系统随机选择一个集群进行分配。
集群容忍策略
集群容忍策略允许调度器将Pod调度至带有对应污点的集群上,需要与集群污点配合使用。
默认的集群容忍策略
在创建工作负载时,UCS会为您的负载配置默认的容忍策略。默认的容忍策略会在某集群出现故障后为其添加表2所示的污点,待持续时长超出容忍时长后会自动驱逐该集群上所有Pod。
在驱逐所有故障集群上的Pod后,待该集群恢复正常,UCS不会按照原有调度策略将Pod迁回该集群。若您需要继续执行原调度策略配置,可以对工作负载进行重新调度。
污点键 |
容忍策略 |
---|---|
cluster.karmada.io/not-ready |
集群状态为not ready时自动添加该污点,持续时长超出容忍时长后会自动驱逐该集群上所有Pod。 |
cluster.karmada.io/unreachable |
集群状态为不可用时自动添加该污点,持续时长超出容忍时长后会自动驱逐该集群上所有Pod。 |
通过控制台配置集群容忍策略
- 登录UCS控制台。
- 在创建工作负载时,单击“下一步:调度与差异化”。
- 添加污点容忍策略。
参数名
参数描述
污点键
集群的污点键。
操作符
- Equal:设置此操作符表示准确匹配指定污点键(必填)和污点值的节点。如果不填写污点值,则表示可以与所有污点键相同的污点匹配。
- Exists:设置此操作符表示匹配存在指定污点键的节点,此时容忍度不能指定污点值。若不填写污点键则可以容忍全部污点。
污点值
- 如果操作符的值是 Exists,则value属性可省略。
- 如果操作符的值是 Equal,则表示其key与value之间的关系是Equal(等于)。
- 如果不指定操作符属性,则默认值为Equal。
污点策略
- 全部:表示匹配所有污点效果。
- NoSchedule:表示匹配污点效果为NoSchedule的污点。
- NoExecute:表示匹配污点效果为NoExecute的污点。
容忍时间窗
即tolerationSeconds参数,当污点策略为NoExecute时支持配置。
在容忍时间窗内,Pod还会在拥有污点的节点上运行,超出时间后会被驱逐。若不配置容忍时间窗,则Pod永远不会被驱逐。