容器服务 设置工作负载的调度规则

通过设置工作负载中高级设置的调度规则,指定该工作负载下的 Pod 在集群内进行调度。存在以下应用场景。

相关产品
容器服务 产品页,含版本规格、价格与购买入口。

一、概述

·将 Pod 运行在指定的节点上。

·将 Pod 运行在某一作用域(作用域可以是可用区、机型等属性)的节点上。

二、前置条件

·设置工作负载高级设置中的调度规则,且集群的 Kubernetes 版本必须是1.7以上的版本。

·为确保你的 Pod 能够调度成功,请确保你设置的调度规则完成后,节点有空余的资源用于容器的调度。

·使用自定义调度功能时,需要为节点设置对应 Label。详情请参见 设置节点 Label。

三、设置调度规则

这篇以通过容器服务控制台创建 Deployment 为例:

1. 登录容器服务控制台,选择左侧导航栏中的 集群。

2. 在集群管理页面,选择需创建服务的集群 ID,进入集群的基本信息页面。

3. 在工作负载 > Deployment页面,单击新建。

4. 在新建 Deployment 页面,你可以根据实际需求,选择节点调度策略。支持选择不使用调度策略和自定义调度规则。

四、自定义调度规则

可自定义实例(Pod)调度规则,匹配实例标签。

自定义调度规则包含以下两种模式:

·强制满足要求条件:调度期间如果满足亲和性条件,则调度到对应 Node。如果没有节点满足条件,则调度失败。

·尽量满足要求条件:调度期间如果满足亲和性条件,则调度到对应 Node。如果没有节点满足条件,则随机调度到任意节点。

自定义调度规则均可以添加多条调度规则,各规则操作符的含义如下:

操作符 含义
In Label 的 value 在列表中。
NotIn Label 的 value 不在列表中。
Exists Label 的 key 存在。
DoesNotExits Label 的 key 不存在。
Gt Label 的值大于列表值(字符串匹配)。
Lt Label 的值小于列表值(字符串匹配)。

五、原理介绍

服务的调度规则主要通过下发 Yaml 到 Kubernetes 集群, Kubernetes 的 Affinity and anti-affinity 机制会使得 Pod 按一定规则进行调度。更多 Kubernetes 的 Affinity and anti-affinity 机制介绍请 查看详情。

赞 (0)
上一篇 4天前
下一篇 4天前