更新时间:2024-10-25 GMT+08:00

配置调度与差异化

集群调度策略

当前界面支持集群权重和自动均衡两种策略。

通过控制台配置调度策略

  1. 登录UCS控制台。
  2. 在创建工作负载时,单击“下一步:调度与差异化”。
  3. 添加调度策略。

    表1 调度策略

    策略

    描述

    集群权重策略

    需要您选择集群并配置分发权重,按照集群权重配比分发Pod。

    自动均衡策略

    按照剩余资源量自动选择集群分发Pod,不需要额外配置。

集群权重的计算方法

计算方法

对于基于集群权重的调度策略,在您设置各个集群的权重后,相应的集群分配Pod数的计算方法如下所述。

  1. 按照权重计算各个集群的分配Pod数(向下取整)。

    分配Pod数 = ( Pod总数 * 该集群权重 ) / 权重的总和

  2. 计算剩余Pod数。

    剩余Pod数 = Pod总数 - 各集群的分配Pod数之和

  3. 若剩余Pod数不为0,则按照集群权重大小排序后再次分配,一次分配一个Pod。排序后,若各个集群设置的权重相同,则会由系统随机选择成员集群进行Pod分配。

计算示例

Pod总数共7个,分配至三个集群member1、member2和member3,设置的集群权重为2 : 1 : 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。

  2. 计算剩余Pod数

    剩余Pod数 = 7 - 3 - 1 - 1 = 2

  3. 按照集群权重大小排序后再次分配

    权重排序为member1权重 > member2权重 = member3权重,则再次分配的结果为:member1分配1个Pod,剩余的一个Pod在member2、member3中由系统随机选择一个集群进行分配。

集群容忍策略

集群容忍策略允许调度器将Pod调度至带有对应污点的集群上,需要与集群污点配合使用。

默认的集群容忍策略

在创建工作负载时,UCS会为您的负载配置默认的容忍策略。默认的容忍策略会在某集群出现故障后为其添加表2所示的污点,待持续时长超出容忍时长后会自动驱逐该集群上所有Pod。

在驱逐所有故障集群上的Pod后,待该集群恢复正常,UCS不会按照原有调度策略将Pod迁回该集群。若您需要继续执行原调度策略配置,可以对工作负载进行重新调度

表2 集群异常状态污点

污点键

容忍策略

cluster.karmada.io/not-ready

集群状态为not ready时自动添加该污点,持续时长超出容忍时长后会自动驱逐该集群上所有Pod。

cluster.karmada.io/unreachable

集群状态为不可用时自动添加该污点,持续时长超出容忍时长后会自动驱逐该集群上所有Pod。

通过控制台配置集群容忍策略

  1. 登录UCS控制台。
  2. 在创建工作负载时,单击“下一步:调度与差异化”。
  3. 添加污点容忍策略。

    参数名

    参数描述

    污点键

    集群的污点键。

    操作符

    • Equal:设置此操作符表示准确匹配指定污点键(必填)和污点值的节点。如果不填写污点值,则表示可以与所有污点键相同的污点匹配。
    • Exists:设置此操作符表示匹配存在指定污点键的节点,此时容忍度不能指定污点值。若不填写污点键则可以容忍全部污点。

    污点值

    • 如果操作符的值是 Exists,则value属性可省略。
    • 如果操作符的值是 Equal,则表示其key与value之间的关系是Equal(等于)。
    • 如果不指定操作符属性,则默认值为Equal。

    污点策略

    • 全部:表示匹配所有污点效果。
    • NoSchedule:表示匹配污点效果为NoSchedule的污点。
    • NoExecute:表示匹配污点效果为NoExecute的污点。

    容忍时间窗

    即tolerationSeconds参数,当污点策略为NoExecute时支持配置。

    在容忍时间窗内,Pod还会在拥有污点的节点上运行,超出时间后会被驱逐。若不配置容忍时间窗,则Pod永远不会被驱逐。