引言

按计算资源调度基本上是各大编排引擎的标配,Rancher在v1.2版本后也推出了这个功能。但部分朋友认为当前的实现还并不是那么智能,所以不知道如何按计算资源调度。故本文教大家如何按计算资源调度。

实现机制

Rancher的实现比较简单,其主要是通过Infra services中的scheduler服务来实现,整体的逻辑架构如下:

输入图片说明

scheduler会订阅Rancher Events,主要是scheduler相关事件,当有调度需求时候,scheduler就会收到消息, 通过计算将合适的调度目标返回给cattle。比如说现在支持memory和cpu为基准, 那么scheduler会不断根据metadata的数据变化来计算资源的使用量,最后可根据资源剩余量为调度目标排序, 这样就可以完成按计算资源调度的目标。

之前有说,Rancher的实现并不智能,这在于在计算资源使用量的时候,Rancher并不是通过一套复杂数据采集机制来计算, 而是通过用户在创建service的时候标注reservation的方式,这个地方很多朋友并没有注意到:

输入图片说明

除此之外,在每个节点的资源总量上也是可配置的,我们完全可以进行一个整体预留的设置,比如:

输入图片说明

总结

这个实现看似简单,其实这是提供了一个很好的扩展能力。如果我们有自己的监控采集体系,完全可以在scheduler的时候调用我们自身监控接口来计算资源,这样就能达到我们所认可的“智能”了。