系统支持丰富的调度策略,包括静态的全局调度策略,以及动态的运行时调度策略,用户可以根据需要自由组合使用这些策略来实现自己的需求。目前云容器引擎支持根据节点名称、节点标签进行调度,同时支持根据亲和性与反亲和性调度。
节点名称调度:应用将调度到指定名称的节点上。
节点标签调度:应用将调度到指定标签的节点上。
亲和\反亲和调度:
用户可根据业务需求进行应用的就近部署,容器间通信就近路由,减少网络消耗。如下图,APP1、APP2、APP3 和 APP4 部署在相同节点上;
同个应用的多个实例反亲和部署,减少宕机影响;互相干扰的应用反亲和部署,避免干扰。如 APP1、APP2、APP3 和APP4 分别部署在不同节点上,这四个应用为反亲和性部署。
云容器平台支持以下几种亲和性设置:
设置应用间亲和:应用部署在相同“节点”中。
设置应用间反亲和:“不同应用”或“相同应用的多个实例”部署在不同主机中。
应用与节点间的亲和性:应用与节点亲和,决定应用部署在某些特定的主机中。
应用与节点间的反亲和:决定应用不能部署在某些特定的主机中。
在设置“应用间的亲和性”和“应用与节点间的亲和性”时,需确保不要出现互斥情况,否则应用会部署失败。例如如下互斥情况,应用将会部署失败:
APP1、APP2设置了应用间的反亲和,例如APP1部署在Node1,APP2部署在 Node2。
APP3部署上线时,既希望与 APP2 亲和,又希望可以部署在不同节点如Node3 上,这就造成了应用亲和和节点亲和间的互斥,导致最终应用部署失败。
进入应用创建流程中的【高级配置】步骤,可根据需求进行不同的节点调度设置。以下列举了六种调度策略设置的方式:
1.选择【节点名称调度】:在【调度】>【节点名称调度】下,单击【添加名称调度】,根据节点名称勾选节点,单击【确定】。该应用将部署在该名称下的节点中。
2.选择【节点标签调度】:在【调度】>【节点标签调度】下,单击【添加标签调度】,勾选节点标签,单击【确定】。该应用将部署在满足该标签的节点中;
3.选择【与节点的亲和性】:在【调度】>【与节点的亲和性】下,单击【添加节点亲和】,勾选需要亲和的节点,单击【确定】。该应用将部署在选择的节点中;
4.选择【与节点的反亲和性】:在【调度】>【与节点的反亲和性】下,单击【添加节点反亲和】,勾选需要反亲和的节点,单击【确定】。该应用将不会部署在选择的节点中;
5. 选择【与应用的亲和】:在【调度】>【与应用的亲和性】下,单击【添加应用亲和】,勾选需要亲和的应用,单击【确定】。亲和的应用将部署在相同节点中;
6.选择【与应用反亲和】:在【调度】>【与应用的反亲和性】下,单击【添加应用反亲和】,勾选需要反亲和的应用,单击【确定】。反亲和的应用将部署在不同节点中;