CaaS VS IaaS | 四个场景叙述 Caicloud 容器云落地实例
16 年 IT, CT, DT 行业从业经验,曾在 UnitedStack, Polycom,Motorola,Siemens 等企业任职。精通云计算 IaaS、PaaS 平台技术,深度学习大数据解决方案等。2 年项目咨询与互联网+创业经历。Prince2 认证,PMP认证,6 西格玛,AMA 认证培训师,曾组织编写并交付过 40 多门管理培训课程。
2018 年 1 月 10 日,Caicloud 售前解决方案副总裁杜宁受邀在“VMware 云原生技术沙龙-北京站”上以《才云科技容器云落地实践分享之 CaaS VS IaaS》为主题进行演讲。以下是现场精彩回顾。
大家好,我的主要工作是面向客户,会给客户提供一些解决方案,或者提供一些落地的真实进入生产环境的实践经验。过去在容器云实践过程中,我们其实有过不同维度的分享,今天我希望能够带来一个不同的角度,所以我对比了一下我们在容器云建设实践过程中的一些案例,会涉及到容器,也会涉及到 IaaS(这里的 IaaS 包括 VMware,OpenStack 和一些公有云的解决方案)。
在容器和 IaaS 集成的过程当中,都会有哪些可能性呢?我做了一些总结,都是基于实际落地案例。
容器平台进入到企业的环境当中,可能有以下这几种场景。第一种情况是 CaaS over IaaS,这个是大家最常见的场景,大家都觉得容器 CaaS 是一个 PaaS,PaaS 在 IaaS 之上是天经地义的;但实践当中也会发现一些其他的可能性,比如说 CaaS with IaaS,就是 CaaS 是待在 IaaS 旁边的一种可能性;还有 CaaS under IaaS 的情况,一会儿我们可以看一下细节;还有就是很多客户现在已经在把 CaaS 当作 IaaS 在用,这叫 CaaS is IaaS。
以上这四种情况,我分别找了四个场景案例分享给大家。
CaaS over IaaS
CaaS over IaaS
第一个是 CaaS over IaaS,这个场景比较常见。我的重点在于,我们很多客户在过去已经用了比较长时间的 VMware 私有云,或者是虚拟化的解决方案,因此,要替换成物理机,替换成其他云方案是比较难的一件事情。在这种情况下,我们尽量让客户在 VMware 上使用容器的解决方案。有些客户会问,容器云承载在物理机上和承载在虚拟机上有什么不同呢?承载在虚拟机上又有什么好处呢?
对于这个问题,容器承载在虚拟机上,其实也是有很多好处的,建议大家在习惯的 VMware 云平台上去承载 CaaS。具体好处一会儿再讲,先看案例。
这个案例当中,我们帮助企业做了几件事情。
首先,我们把容器平台跟底层的 VMware vCenter 做了 API 的集成,可以通过 API 的方式来让 vCenter 创建虚拟机,然后扩容容器云的宿主机。这样的集成方案,可以形成 CaaS 和 IaaS 的联动,同时帮客户实现了商业化存储集成和整合。
此外,企业已经建设好了 Elastic Search 平台用于日志处理,也建设好了监控平台,且都运行良好,所以容器平台建设时,可以通过集成到已有平台,让企业统一化管理日志和监控,而不是单为容器建设一套新的日志监控平台,进而提升客户的管理和效率。引申一下,在公有云上建设 CaaS,也可以实现类似 SLB 的集成和整合,这些都是可以做的,也对企业用户的管理有益。
回到刚才的问题,至于 CaaS 运行在虚拟机环境上有什么好处呢?我总结了几点:
第一,有了虚拟机这一层虚拟化,企业加强了容器的隔离性。大家知道容器共享内核,所以大家诟病最多的,就是容器的内核安全性隔离不够强,现在有不少新的方案,比如说虚拟化容器等,也都是为了解决这些问题。所以容器跟虚拟机去结合,也可以在这方面补强,安全性和隔离性都会提升。
第二,客户过去已经长时间使用 VMware 的虚拟化,所以在虚拟机上使用容器,对企业的云使用方式、运营方式来讲是一个非常平滑的过渡。
第三,对于存储的使用来讲,在没有一个后端的统一分布式存储来支持容器集群的情况下,容器使用本地存储。如果是在物理机上,本地存储方式很可能造成容器在迁移的时候,存储卷无法跟随迁移;如果是在虚拟机上,虚拟机后端的存储是远程挂载和访问方式,虚拟机在停止工作的时候,可以让它的存储继续挂接到另外一台虚拟机上,帮助迁移后的容器找到数据。
容器本地存储方面,Caicloud 在社区做了不少本地存储方向上的优化和提升。比如,Local Storage 中的磁盘限额等功能,是把本地存储上的磁盘限额做了限制,避免容器把本地磁盘上的存储越用越满,最后影响了宿主机上所有进程的运行。本地存储磁盘限额的同时,还做了亲和性的功能特性,使容器在迁移或者重新调度时,确保调度到有本地存储的宿主机上,并确保容器正常运行。
第四,便于批量备份和迁移,同时横向的扩展能力进一步加强。
CaaS with IaaS
CaaS with IaaS
第二,是 CaaS with IaaS。大家知道现在有不同的应用类型,比如微服务就是一种应用类型。微服务比较适合运行在容器里,因为如果把微服务运行在虚拟机或者物理机,资源的损耗太大了,也太浪费了。所以微服务和容器是天生一对的好朋友。
相对于微服务来说,传统的单体大应用一般使用虚拟机来承载。如果一个企业所有的应用都微服务化了,毋庸置疑,都跑在容器里就可以了。但是不少企业是在一个过渡和不断演化的过程中,传统应用和微服务应用会并存。为了适应企业在微服务改造过程中的阶段现状,我们就把容器和虚拟化并排摆放在这个数据中心的虚拟化架构中,容器作为虚拟化的方式,与虚拟机一样都是承载应用的实例。
但是,在这种并排工作的情况下,通常来讲企业需要我们帮助解决不少问题。比如说,IaaS 如果是 OpenStack,且它底层的存储用 SDS,网络用 SDN,云平台的认证、安全都在服役中,那么在容器平台建设时,如果刚才提到的基础设施都重新搭建,云平台访问界面也分离独立控制,对于企业的运用和管理来讲,就是两套完全独立的系统,会非常麻烦。在这种情况下,当建设容器云时:
鉴权方面,我们需要帮助企业考虑认证鉴权集成,统一登陆。
存储方面,比如企业过去一直用 Ceph 的开源存储方案,可以让容器云与 Ceph 集成。
网络层面,也可以考虑复用 IaaS 的网络基础设施。通过这样的集成,也帮助实现了金融行业要求容器是固定 IP 的问题。金融行业的业务和平台管控非常严格,每个应用、每个容器都需要监控其运行状态、日志监控、SSH 访问管理等等,这些管理和监控的动作都要求容器具有固定 IP 地址,才有可能进行。
前端的访问和管理界面,做集成和整合,从多租户上进行分层结构和访问的统一。
幸运的是,Caicloud 开发的 Compass 容器云平台的多租户架构与 OpenStack 的多租户架构,以及一些公有云的租户架构是非常相似的。Compass 的多租户不是社区原生的 Namespace,是可以跨多个集群分配资源的。做了这么多的工作以后,CaaS 和 IaaS 平台运行起来,会是统一界面的、统一存储的、统一网络的、统一认证的、统一安全的、一个完整易用的架构,有一点像京东的 JDOS,是 Kubernetes 和 OpenStack 的深度融合。
CaaS under IaaS
CaaS under IaaS
第三,是 CaaS under IaaS。IaaS 为什么放到 CaaS 之上呢? 如图中的 OpenStack,我们把 OpenStack 里的系统服务用容器方式运行。这么做的好处是整个 IaaS 平台的运维、升级、管理都非常方便。
过去没有容器,OpenStack 在做升级的时候非常困难,基本上做不到平滑升级,现在有 OpenStack 厂商会把 OpenStack 的这些服务容器化。比如类似于 Nova 里的 Nova API、Nova Conductor,甚至是 MySQL 这些管理服务,都容器化来部署和运维。
容器化的好处是:在升级 OpenStack 版本的时候,只需要去替换镜像,分钟级就可以完成升级了。在没有采用容器的时候,因为所有服务都是在物理机或者虚拟机上的,在升级、更新、维护服务时,有可能需要重启节点,甚至是计算节点,这会影响到节点上的业务。现在用容器化的方式去运维管理,会提高整个运维的效率。这是把 IaaS 的管理服务放在容器里,以提高运维能力的一个案例。
CaaS is IaaS
CaaS is IaaS
最后一个场景,有些企业,把 CaaS 当成 IaaS 用,最有名的就是谷歌。谷歌在虚拟机大行其道之前,就已经把容器变成了数据中心的主流架构了。所以谷歌没有赶上虚拟机的流行,但是成了一个纯容器的 IT 架构。谷歌内部八十多个数据中心,一百多万台服务器上面的所有应用,都是运行在容器里的,每周会启动大约三十亿个容器。
也有一些企业,也希望让容器变成基础架构。这种场景下,CaaS 提供了 IaaS 上、PaaS 上几乎所有的功能,比如 IaaS 上存储、网络、集群的管理,PaaS 上 CI/CD、数据库服务等功能。这个案例,不止是 IaaS,更准确地说是将行业云上的服务提供给企业的上下游公司、行业内的中小公司来使用,这是把 IT 资源变成了一个有形的、有价值的、可盈利的载体。
CaaS is IaaS
这里还有一个案例,企业做的是智慧家庭的 IOT。容器云是一套全新架构。容器上承载的应用是智慧家庭 IOT 的应用,除了基础容器云平台功能外,我们还帮助企业在容器云上实现了深度学习架构。我们将智慧家庭应用中产生的大量数据进行大数据分析和计算,用数据产生价值,再回馈到客户当中。
这个案例的特点,就是用容器来做 IaaS,上面用深度学习的模型和算法来对数据进行计算,并实现增值价值和客户粘度。容器和数据的结合和应用,现在变成了一个趋势。有不少的开源项目,赋能 Kubernetes 来调度深度学习大数据计算框架、管理分布式计算任务、调动高级计算资源,如:GPU,TPU 等,帮助 TensorFlow 等类似的分布式机器学习框架来实现分布式运算、提高计算效率、形成多维度计算加速。
-END-
推荐阅读:
打破瓶颈 | Prometheus Remote Storage 实践