《企业级容器云架构开发指南》—1.4.3 Kubernetes & Mesos新秀

举报
华章计算机 发表于 2019/05/30 16:38:32 2019/05/30
【摘要】 本书摘自《企业级容器云架构开发指南》一书中的第1章,第1.4.3节,编著是闫健勇 龚 正 吴治辉  屈晓萌 王健飞 王 伟 刘晓红。

1.4.3 Kubernetes & Mesos新秀

首先,我们来说说微服务架构之王——Kubernetes。

Kubernetes是目前PaaS领域里影响最大、最活跃的开源项目。用过Kubernetes的人都会有一个很深的体会:我们日常应用的设计、部署、扩容等环节,在Kubernetes里都能得到很好的支持。

Kubernetes中最重要的一个概念是Service,这实际上是微服务架构理念,Service就是一个微服务,背后对应一组从容器方式运行的程序实例,具备弹性扩容和自动故障恢复的能力。在后面的章节中我们会对Kubernetes进行深入的介绍和分析,因此这里就不做过多的介绍。

图1-11体现了Kubernetes微服务架构平台的核心思想。

image.png

图1-11 容器化PaaS平台——Kubernetes

Kubernetes第一次将Service的高度提升到超过Machine的地位,我们不再关注应用部署的细节,只要规划好系统是由多少种不同的Service所组成的,每种Service需要部署多少个容器(Pod)实例才能满足性能要求,其他的就交给Kubernetes引擎了,它会根据当前集群资源的使用情况给出最佳的调度方案,并且自动完成容器实例的创建和部署过程,我们无须再花费脑力进行规划。

Kubernetes的另外一大核心设计思想和优势是“高度自动化”。在Kubernetes的世界里,资源调度是自动化的,程序部署是自动化的,监控是自动化的,故障恢复是自动化的,服务平滑升级只要一键,服务扩容也只要一键,当前Kubernetes 1.5甚至已经初步实现了服务扩缩容的自动化。越深入学习和了解Kubernetes,你就越发地惊叹谷歌惊为天人的巨大创造力。

其次,我们谈谈号称“数据中心操作系统”的Mesos,如图1-12所示。

image.png

图1-12 容器化PaaS平台——Mesos

从严格意义上说,Mesos其实不属于一个完整的PaaS平台,而是一个先进的资源分配和任务调度系统。但考虑到资源管理也是PaaS的基本功能之一,并且很多通用应用也都已经能够在Mesos上安装并运行,所以我们也将其归到PaaS平台进行介绍。

Mesos最初并不是针对容器来进行开发的,而是想对开源的大数据管理平台Hadoop进行资源的管控和调度,从而设计和研发的一个开源项目。最早出自加州大学伯克利分校。

Mesos的设计理念分两层:下层是物理机器,组成资源池;上层是称为Framework的应用框架,每一个应用必须针对Mesos的Framework开发框架做定制化的开发后才能在Mesos上运行。为了支持Docker容器,Mesos后来提供了Marathon这个Framework。但Marathon并不是一个完整的微服务架构平台,缺乏负载均衡器、DNS等必需的组件。

Mesos的稳定性和健壮性在业界是比较认可的。例如,Twitter、MBNB的数据中心都有由几千台机器组成的一个大的Mesos平台,现在也有很多的公司以“Mesos+Marathon”为技术平台来搭建他们的容器化运行环境。Mesos提出一个流行概念——DCOS,即把Mesos当成数据中心的一个操作系统,负责统一调度数据中心的每台物理机,其上则运行各种大数据系统,这样可以确保数据中心的物理资源得到更充分的利用。

Mesos和Kubernetes这两个平台是可以完全融合在一起的,因为Kubernetes的重点是实现容器化应用的支撑和运行,而Mesos负责底层资源的分配和管控,相较于Mesos而言,Kubernetes没有更细致的底层资源管控层,所以Kubernetes和Mesos之间的调度没有冲突,完全可以融合在一起实现整个资源调度的平台。

具体的做法是Kubernetes可以作为一个Framework运行在Mesos之上,替换原来的Marathon实现容器化应用的支撑,而底层的资源则完全交给Mesos来负责管控和统一调度。实际上,Mesos中运行Kubernetes的方案就是采用了这个思路。

那么,Kubernetes是否可以替代Mesos呢?

这个问题目前还没有清晰的答案,但我们看到,Kubernetes除了继续完善微服务架构的高级功能之外,也开始进入任务调度的新领地。从本质上来说,任务调度系统的设计和开发难度要远远小于微服务架构系统,如果Kubernetes想往这方面深入发展,凭借谷歌的领导力和实力,有朝一日超越Mesos也不是不可能的事情。

最后,我们来简单谈谈PaaS与Iaas融合的问题。

OpenStack原来是Iaas平台系统,但是随着容器技术的发展,OpenStack也开始支持Docker。最近由谷歌牵头发起的Magnum子项目的目标是在OpenStack上直接支持容器,当然其主要目的是支持自家的Kubernetes平台,这样一来,既提升了 OpenStack的应用场景,又借着OpenStack这艘大船,进一步扩展了Kubernetes的地盘,是一箭双雕的好事。

未来基于开源体系搭建的私有云(行业云)的技术栈目前看来非常清晰了,底层的IaaS平台可以用OpenStack来实现主机、存储、网络的虚拟化和集中管控,上层则搭建基于容器化的新一代PaaS平台(Kubernetes、Mesos等)来支撑上层应用,再辅以一些自动化运维工具和定制开发的Web管理系统,即可形成一套低成本同时又具备技术领先性的私有云。

在后面的章节中,我们将具体聊一聊微服务架构、DevOps、Docker、Kubernetes、Mesos,以及企业级容器云在电信行业的应用实践。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。