什么叫做在离线混合部署?
首先要明确什么叫做在线任务和离线任务:在线任务需要资源相对较少,但要求响应时间短,例如web服务;离线任务则不需要对任务进行迅速响应,但是计算量相对较大、占用资源多,例如机器学习。因此我们把在线和离线项目部署在同一个集群上就叫做在离线混合部署。
为什么要做在离线混合部署?
举一个例子,淘宝双十一的服务量是非常高的,那么为了保证双十一当天服务器不会崩溃,需要一台计算能力足够大的服务器来支持运行,但是双十一过后,如此大的一个机器便失去了他的作用,那么就会造成资源的浪费,那么我们就要采取在离线混合部署来使我们的服务始终保持一个高的资源利用率。当在线资源需求量大的时候,我们让离线资源为在线资源让路,同样的让在线资源需求量小的时候我们来让离线资源使用更高的资源。
理论支持
如何做到让离线资源为在线资源让路,我们之前写过关于Qos:服务质量等级,在这里我们介绍过优先级的概念,我们举个例子,比方说计算机中的内存和磁盘资源是不可以被压缩的,而当资源紧俏时,kubelet会根据资源对象的QoS进行驱逐:
- Guaranteed,最高优先级,最后kill。除非超过limit或者没有其他低优先级的Pod。
- Burstable,第二个被kill。
- BestEffort,最低优先级,第一个被kill。
这也就意味着如果一个Node中的内存和磁盘资源被多个Pod给抢占了,那么QoS为BestEffort的Pod显然是第一个被kill的。因此我们在实际部署的时候,