目录
1. docker swarm 项目开始于2014年,swarm 是 docker 公司的第一个容器集群项目。
项目核心设计是将几台安装 docker 的机器组合成一个大的集群,集群提供给用户的
API 接口与使用一台 docker 同样的接口
2. swarmkit 项目开始于 2016年,是docker 家出的第二个容器集群项目,虽然也叫swarm,
但是与第一个项目已经完全不同。该项目将 docker engine 内嵌了集群管理功能,
新增了集群管理的用户接口
1. Docker engine 内嵌 swarmkit 提供集群管理,除了安装 docker 外无需其他软件
2. swarmkit 所有节点对等,每个节点可选择转化为 manager 或者 worker。manager 节点内 嵌了 raft 协议(基于etcd 的 raft 协议)实现高可用,并存储集群状态
Mesos最初由 UC Berkeley 的 AMP 实验室于 2009年发起,遵循Apache 协议,目前已经成立了 Mesosphere 公司进行运营。 Mesos 可以将整个数据中心的资源(包括CPU、内存、存储、网络等)进行抽象和调度,使得多个应用同时运行在集群中分享资源,并无需关心资源的物理分布情况
Mesos 有 Framework、Master、Agent、Executor、Task几部分组成。这里有两层的Scheduler,
一层在 Master 里面,allocator 会将资源公平的分给每一个 Framework,
二层在Framework 里面,Framework 的 scheduler 将资源按规则分配给 Task
1. Kubernetes 是 Google 团队发起的开源项目,他的目标是管理跨多个主机的容器,
提供基本的部署,维护以及应用伸缩,主要实现语言为 Go 语言
2. Kubernetes特点:
· 便携: 支持公有云,私有云,混合云,以及多种平台
· 可拓展:模块化,可插拔,可任意组合
· 自修复: 自动重调度,自动重启,自动复制
1. CRI(Container Runtime Interface):
远程调用接口(gRPC),这个接口定义了容器运行时的各项核心操作,比如:启动一个容器需要的所有参数 运行时与系统通信
2. CNI(Container Networking Interface):
该接口调用网络插件为容器配置网络
3. CSI(Container Storage Interface):
调用存储插件为容器配置持久化存储
1. Paas 平台除了需要定义应用之间的编排关系,应用运行的形态是影响“如何容器化应用” 的重要因素,Kubernetes 定义了新的、基于Pod改进后的对象
· Job 用来描述一次性任务(比如大数据任务)
· DemonSet 用来描述每个宿主机上必须且只能运行一个副本的守护进程任务
· CronJob 用来描述定时任务
2. 可以看到Kubernetes 没有采用其他项目那样为每一个管理功能创建一个指令,然后在项目中实现其中逻辑,这样的做法可以解决当前的问题,但是当有新的需求出现时,往往又需要定义新的指令