一、调度系统集群模式

Kubernetes调度系统本身的集群模式是主从。由Master节点负责调度,将任务调度分配到Node节点中。

二、在集群模式下,调度系统本身如何调度资源,例如如果要调度任务 A,那么应该是在调度系统进群的哪个节点上调度

Kubernetes的调度模式如下:

首先调度器会寻找nodeName为空的Pod进行作业调度,调度流程分为两部。 第一步Predicate:过滤不符合条件的节点

第二部Priority:优先级打分排序,选择优先级最高的节点。

三、任务分类

Kubernetes支持 LRS(Long Running Service)和 Batch Jobs 两种作业形态,对它们进行“分别管理”和“混合调度”。这里针对于任务分类,我们主要说一下Job和CronJob这两个对象。

  1. 首先我先介绍一下Job对象中负责并行控制的两个参数:
  2. CronJob 他是一个专门用来管理 Job 对象的控制器。只不过,它创建和删除 Job 的依据,是 schedule 字段定义的、一个标准的Unix Cron格式的表达式。

所以对于我们对于任务的分类可以使用如下方式来实现:

四、任务管理

Kubernetes是通过apiserver来查询任务的运行情况。当任务的STATUS字段会记录用户任务执行的情况。

任务日志可以输出到stdout和stderr中然后通过在宿主机上部署 logging-agent 的方式来集中处理日志。

Kubernetes整个项目是声明式API,他只规定他的期望的目的。然后剩下的交给系统来处理。直到达到期望值。一个 Kubernetes 的控制器,实际上就是一个“死循环”,它不断地获取“实际状态”,然后与“期望状态”作对比,并以此为依据决定下一步的操作。

因此他允许删除任务。删除时,将任务,没有调度的任务直接从队列里丢弃。允许修改任务配置。修改调度配置以后会按照新的调度配置重新执行一遍。当删除任务时,任务先接收term信号, 再接收kill信号。