按计算资源调度基本上是各大编排引擎的标配,Rancher在v1.2版本后也推出了这个功能。但部分朋友认为当前的实现还并非那么智能,因此不知道如何按计算资源调度。故本文教你们如何按计算资源调度。架构
Rancher的实现比较简单,其主要是经过Infra services中的scheduler服务来实现,总体的逻辑架构以下:排序
scheduler会订阅Rancher Events,主要是scheduler相关事件,当有调度需求时候,scheduler就会收到消息, 经过计算将合适的调度目标返回给cattle。好比说如今支持memory和cpu为基准, 那么scheduler会不断根据metadata的数据变化来计算资源的使用量,最后可根据资源剩余量为调度目标排序, 这样就能够完成按计算资源调度的目标。接口
以前有说,Rancher的实现并不智能,这在于在计算资源使用量的时候,Rancher并非经过一套复杂数据采集机制来计算, 而是经过用户在建立service的时候标注reservation的方式,这个地方不少朋友并无注意到:事件
除此以外,在每一个节点的资源总量上也是可配置的,咱们彻底能够进行一个总体预留的设置,好比:图片
这个实现看似简单,其实这是提供了一个很好的扩展能力。若是咱们有本身的监控采集体系,彻底能够在scheduler的时候调用咱们自身监控接口来计算资源,这样就能达到咱们所承认的“智能”了。资源