返回 登录
0

Kubernetes、Swarm、Mesos最新版本功能比较(下)

Kubernetes、Docker Swarm、Mesos作为时下流行的容器框架受到了广大开源爱好者和企业的关注。面对用户需求不断的升级和自身产品不断的改进更新,其功能愈发趋于完善,迭代版本也不断的发布。因为篇幅过长,分上下两篇推送,本文为下篇。

6. 弹性缩放和理想状态的调整

Kubernetes通过RC设定Pods数量,其管理器可以自动保持和维持以确保服务的高可用性。Kubernetes Master会时刻检查集群状态,对与既定规则不符的pod进行调整。如,既定当前3份pods一簇运行当前服务,其中一个pod因为某些原因失败或停止,kubernetes管理器会尝试指定的其它worker节点上新规重启pod。针对实时使用的资源大小也会监控,调整并分配最佳数量(在预定上下限内)。

Docker Swarm对于每项服务,你都可以明确想要运行的任务数,当你增加或减少任务数时,Swarm管理器可自动增加或删除任务,以保持理想状态。其管理节点持续对集群状态进行监控,并对实际状态和你明确的理想状态之间的差异进行调整。例如,当你创建一个服务来运行一个容器的10个副本,托管其中两个副本的工作机崩溃时,管理器将创建两个新的副本,代替之前崩溃的两个。另外,管理器会将新的副本分配给正在运行且可用的工作机。

Mesos通过Marathon管控。Mesos master给slave节点分配任务,如果需要调整,它就会通知marathon。Mesos slave负责运行容器,并且报告当前节点的资源使用情况。

7. 网络方面

Kubernetes官方支持Flannel、Calico、Romana、Contiv等众多组网方案。保证每一个pod都拥有一个扁平化,共享网络空间的IP,通过该IP,pod就可以跨网络和其它物理机或pod进行通信。一个pod一个IP创建了一个干净,反向兼容的模型。在该模型中,从端口分配、网络、域名解析、服务发现、负载均衡、应用配置和迁移等角度,pod都能被看成虚拟机和物理机;

Docker Swarm使用多主机网络,保证可以针对用户的服务指定一个覆盖网。Swarm管理器初始化或更新应用时,它会自动将地址分配给覆盖网上的容器;

Mesos在1.0.0保证了对容器网格标准CNI的支持,CNI标准是多家网络厂商参与制定的容器网络标准,Mesos兼容了CNI标准,相当于间接的支持了VxLAN、DC/OS overlay、Calico、Weave、Flannel等多种网络技术。这是继容器IP功能后,Mesos的又一重要的网络功能。

8. 服务发现和负载均衡

Kubernetes通过Services定义了由容器所发布的可被发现的服务/端口,以及外部代理通信。服务会映射端口到外部可访问的端口,而所映射的端口是跨多个节点的Pod内运行的容器的端口。也可利用nginx-ingress等外部负载均衡器。其服务内部均衡使用kube-proxy。

Docker Swarm管理节点给Swarm集群上的每项服务分配一个唯一的DNS名称以及负载均衡的运行容器。可通过嵌入Swarm的DNS服务器对集群上运行的各个容器进行查询。

Mesos则使用Mesos-DNS。Mesos上的应用和服务可以通过DNS的方式来发现对方。Mesos-DNS的特点是轻量、无状态,易于部署和维护。

9. 安全方面

Kubernetes引入了RBAC(基于Role的访问管理控制)功能,该实现源于OpenShift项目。(该RBAC系统建立于Kubernetes资源之上,可以让角色、权限和关系动态作用于first-class的API交互,将之前Kubernetes版本的authZ设施中的静态平面文件放置于其后面。该RBAC功能被添加进了Kubernetes 1.3中,简化了针对不同企业群体、团队或者会计制度的关于多租户环境中的创建情况。)

Docker Swarm通过各个节点强制TLS相互授权和加密,从而确保自身与其他所有节点之间的通讯安全。可选择使用自签的根证书或自定义根CA证书。

Mesos在1.0.0中通过提供更细粒度的授权验证机制对此作出了响应。首先,在1.0.0中,Mesos的所有敏感数据入口都是经过SSL/TLS加密的;其次,Mesos管理员现在可以通过配置ACLs来限制用户只能在WebUI/API看到自己的任务了,而这就是企业用户的must-have要求;最后,Mesos也提供了完善的authorizer接口,企业用户可以通过该接口添加自己特有的安全策略。

10. 滚动升级方面

三者都保持相同的功能,即升级时,可以将新老版本服务共存,逐步减少老版本数量增加新版本数量,直至全部更新。如果出错,可以回退到升级前的既定版本。

11. GPU支持

三者都对NVIDA GPU有一定程度的支持,可是在调度的时候将NVIDA GPU作为资源进行调度。

12. 社区优势和合作方面

Kubernets基于Google数十年运行大规模容器的经验,RedHat多年部署和管理企业中的开源软件的经验,CoreOS的敏捷开发经验和很多其他组织和社区成员的优势。亦有全球级大技术公司的支持,比如微软、华为等。

Docker Swarm属于Docker自身设计,研发和维护;

Mesos作为老牌技术也有着广泛的支持团队,如IBM,Microsoft,Nvidia。其中,IBM已经成为紧随Mesosphere之后的第二大Mesos代码贡献厂商,未来IBM会在Mesos的optimistic offers,资源分配优化和兼容POWER平台方面投入力量。同时,Mesos也推出了Mesos运行在Micrisoft上的试验功能。

13. 其他

Kubernetes在v1.3中增加了vsphere_volume卷管理。通过结构体VSphereConfig可以看出来,kubernetes的vsphere卷管理插件可以直接连接到VMware vCenter上。如果kubernetes是部署在vsphere上面的虚拟机里面,那么可以通过给虚拟机挂载硬盘的方式来给kubernetes添加卷。

Mesos近期内在做的有关容器的开发。第一个是Nested Container,当我们跑容器的时候,可以在容器里面将它分割成更小的容器。当大容器里面可以管理一定资源boundary的时候,重新再贴上更小的容器,这个对于跑CI/CD、Jenkins在Mesos上时很有用,每一个Jenkins都可以有自己的一个资源上限,它要跑十个CI job,Mesos就把已经有的资源给它们,但是它们确保不会跑出Mesos给的资源上限。

VM support就是Mesos可以不跑容器,直接跑VM,对于比较传统的一些IT企业来说,他们还没有办法从OpenStack或者从VM里面直接跳到容器里面,所以这是非常重要的一个功能。

本文作者来自轻元科技郭威,该文为下篇。

相关文章:Kubernetes、Swarm、Mesos最新版本功能比较(上)

评论