rancher调度规则

rancher调度规则是咋样的?是按照容器个数吗? 如果是按照个数,同一个资源池不同配置的主机调度明显不合理了。 还有,前后端服务所占资源相差太多,按照个数调度也不太合理。 能否选择按照时时资源调度?
已邀请:

王伟军 - 分享技术,分享快乐

先给各服务器打上各种标签,
比如:CPU=8vCPU、DSK=HDD、MEM=32GB、...
CPU=40vCPU、DSK=SSD、MEM=128GB、...
然后把服务调度到指定的标签机器上。

如果用户不指定标签(即用户没有约束的要求),
资源池有很多主机都满足要求,系统会随机分配主机。

我的理解:就是用户有要求的话,先满足要求进行调度,
用户没有要求,系统随机分配。

https://rancher.com/docs/rancher/v1.6/zh/rancher-services/scheduler/#resource-constraints  基于资源约束的调度
当Rancherhttps://rancher.com/docs/rancher/v1.6/zh/hosts/被添加到Rancher时,它们将根据主机的大小自动限制资源。可以通过编辑主机来调整这些限制。在基础架构 -> 主机中,你可以从主机的下拉框中选择编辑。在主机的资源限制选项中,你可以更新内存或者CPU为你期望需要用到的最大值。在UI上设置资源预留
创建服务时,可以在安全/主机选项卡中指定内存预留mCPU预留。设置这些预留时,服务的容器只能安排在具有可用资源的主机上。主机上这些资源的最大限制是根据主机的资源限制确定的。如果将容器调度到主机上会迫使这些限制超过阈值,则容器将不会被调度到主机上。 在主机上调度指定服务
通常,大部分的容器调度规则定义在了服务中。服务对可以运行容器的主机设置了一些规则或限制。例如,容器必须安排在具有特定标签的主机上。Rancher还可以支持只允许将特定的容器调度到某个主机上。例如,你可能希望某台专用主机只运行数据库容器。

注意:当你在主机上添加运行容器的限制标签时,你将需要包含一个特定标签,以便将Rancher的https://rancher.com/docs/rancher/v1.6/zh/rancher-services/调度到主机上。没有这些服务,容器将无法正常运行。



对于任何主机,你可以通过从主机的下拉列表中选择编辑来编辑主机以添加可运行容器必须具有的标签。 在容器标签需求选项中,你可以添加要在服务中使用哪些标签,以便将这些容器调度到主机上。UI将自动将标签(例如,io.rancher.container.system =`)标记为必需的标签。
谢谢大神的细致回答,可能我问的问题表达的不太准确,我们的业务场景是这样的:

业务主要分为22个大模块,总共90个纯业务的微服务,分配内存上限4G,非预留,如果在生产环境一般服务都是3-5节点,总共大概在300个左右的。

我们很多客户都要求私有化部署,一个环境跑业务应用的主机不超过20台 这样的话我们只能简单粗暴的给所有主机扔到一个池子了,都一样的标签让rancher自行去调度。

不过我观察发现rancher并没有统计计算资源,感觉就像是通过个数来计算的,比如某台主机的前端微服务很多了,其实占不了多少资源,后端再调度的时候依然不会往这台机器上分配了,现在采用的是前后端分开的主机标签。

而且主机配置不一样的话也不行,配置低的会被压死。。

我要按业务给主机分标签的话复杂度太高了,而且这样没法做自动的扩缩
 

王伟军 - 分享技术,分享快乐

关于调度服务的介绍:
https://rancher.com/docs/rancher/v1.6/zh/cattle/scheduling/#section  
https://rancher.com/docs/rancher/v1.6/zh/rancher-services/scheduler/  

规模大,系统复杂,需要架构方面咨询,也可以考虑购买专业支持:
https://www.cnrancher.com/rancher-professional-support-service/ 

要回复问题请先登录注册