一、容器调度系统
目前三大主流的容器平台Swarm、Mesos、Kubernetes具有不同的容器调度系统。
Swarm:
直接调度Docker容器,提供和标准Docker API一致的API。
Mesos:
针对不同的运行框架采用相对独立的调度系统。其中 Marathon 框架提供了 Docker容器的原生支持。
Kubernetes:
Kubernetes 则采用了 Pod 和 Label 这样的概念把容器组合成一个个的互相存在依赖关系的逻辑单元。 相关容器被组合成 Pod 后被共同部署和调度, 形成服务( Service)。
这个是 Kubernetes 和 Swarm, Mesos 的主要区别。
相对来说, Kubernetes 采用这样的方式简化了集群范围内相关容器被共同调度管理的复杂性。 换一种角度来看, Kubernetes 采用这种方式能够相对容易的支持更强大, 更复杂的容器调度算法。
二、调度过程
-
预选阶段 Predicates:遍历全部节点,过滤掉不满足节点的节点;
-
优选过程 Priorities:对通过的节点按照优先级排序
-
最后从中选择优先级最高的节点部署Pod。如果中间任何一步出错,就直接返回错误。
![](https://img-blog.csdnimg.cn/f0fa00e988ac4289938b7c14f225c700.png)
三、创建Pod
![](https://img-blog.csdnimg.cn/8bd3b7008c814cf4a62a7cf7328e42a6.jpeg)
创建pod流程
Kubernetes就是利用这种List-Watch机制保持数据同步的,如上图:
有三个 List-Watch,分别是 kube-controller-manager(运行在Master),kube-scheduler(运行在 Master),kublete(运行在 Node)。他们在进程已启动就会监听(Watch)APIServer 发出来的事件;
1、 kubectl通过命令行,在APIServe