Kubernetes调度系统本身的集群模式是主从。由Master节点负责调度,将任务调度分配到Node节点中。
Kubernetes的调度模式如下:
首先调度器会寻找nodeName为空的Pod进行作业调度,调度流程分为两部。 第一步Predicate:过滤不符合条件的节点
第二部Priority:优先级打分排序,选择优先级最高的节点。
Kubernetes支持 LRS(Long Running Service)和 Batch Jobs 两种作业形态,对它们进行“分别管理”和“混合调度”。这里针对于任务分类,我们主要说一下Job和CronJob这两个对象。
所以对于我们对于任务的分类可以使用如下方式来实现:
Kubernetes是通过apiserver来查询任务的运行情况。当任务的STATUS字段会记录用户任务执行的情况。
任务日志可以输出到stdout和stderr中然后通过在宿主机上部署 logging-agent 的方式来集中处理日志。
Kubernetes整个项目是声明式API,他只规定他的期望的目的。然后剩下的交给系统来处理。直到达到期望值。一个 Kubernetes 的控制器,实际上就是一个“死循环”,它不断地获取“实际状态”,然后与“期望状态”作对比,并以此为依据决定下一步的操作。
因此他允许删除任务。删除时,将任务,没有调度的任务直接从队列里丢弃。允许修改任务配置。修改调度配置以后会按照新的调度配置重新执行一遍。当删除任务时,任务先接收term信号, 再接收kill信号。