容器在国内的火热程度毫不亚于国外,这从基于容器的创业公司的数量上就能看出来。而大部分容器相关的创业公司都瞄准了同一个方向:CaaS(容器即服务)。 时速云 就是这样的一家公司,他们基于Docker、Kubernetes、Mesos等开源技术实现了大规模容器集群的调度、部署和管理。目前他们的容器云平台上已经运行了上万个容器,并且非常稳定。为了了解时速云的创业背景以及他们的容器云平台的架构等细节,InfoQ记者采访了时速云CEO黄启功。另外,时速云CTO王磊也将在8月28日举行的 CNUTCon全球容器技术大会 上分享题为《时速云基于Kubernetes打造容器云平台的实践》的演讲,敬请关注。
InfoQ:时速云的定位和愿景是什么?为什么当时会选择创业以及选择Docker创业?
黄启功:时速云TenxCloud是一家云计算领域的初创公司,我们的定位是轻量级的容器云平台(Container as a Service)。CaaS很好的结合了IaaS和PaaS两者的优势,我们以Docker为代表的容器技术作为切入点,整个云平台都是以容器化应用作为交付的标准。TenxCloud目前立足于公有云,为开发者和企业提供了一个快速构建、集成、部署、运行容器化应用的平台,帮助开发者和企业提高应用开发的迭代效率,简化运维环节,降低运维成本。 我们希望可以为容器技术在中国的发展贡献我们的力量,惠及更多的开发者和企业,与各界合作伙伴一起打造一个健康的、快速增长的容器云生态。
谈到创业的初衷,就要说起我在IBM期间的工作了。在IBM的几年,刚好经历IBM从传统的IT服务商拥抱云计算的战略转型,我有幸从事过各种类型的云计算产品。 IaaS解决了资源的问题,但应用的构建、部署、运维等并没有得到很好的解决。Docker的出现让我们看到了希望,Docker的部署速度比虚拟机高出一个量级,占用资源极少,共享HostOS,秒级部署,Namespace隔离以及集装箱的理念很好的解决了环境构建的问题,加上我本身在做IBM Bluemix PaaS平台,我们当时研究过国内外主流的PaaS平台,以及分析他们为什么没有起来的原因,感觉到以Docker为代表的容器技术未来在云计算领域会有很大的机会,CaaS很有可能会改变用户使用IaaS和PaaS的方式, 于是决定基于Docker创业做些事情。
黄启功:目前时速云使用的技术栈比较多样化。基于Docker给我们带来的轻量级、自满足的打包特性,很好的消除了不同技术栈之间的差异,并以微服务形式进行封装,互相提供服务接口,可以简化一些开发技术上的问题。主要涉及Node.js和Golang,以及一些Python、 Ruby、Shell脚本的使用,根据不同的使用场景使用不同的技术,满足快速开发、方便维护、容易扩展的需求。在设计和实现上,严格遵循了微服务的理念,比如每个模块尽量实现单一服务功能,服务之间的通信接口尽量简单轻量,每个服务可以比较轻松的实现横向伸缩等。
目前的架构可以分为4个大的区域:
黄启功:1. 国内首个跨IaaS的容器云平台。时速云北京2区开放,率先支持跨集群、跨底层IaaS提供镜像和容器服务的能力。同时,2区使用了更先进的底层技术,包括更大规模的集群支撑、分布式的数据存储等等,将提速整个平台的运行效率和稳定性。
2.TenxCloud推出了国内首个Docker容器主机集群管理混合云服务。这是我们基于容器技术在混合云方面的探索和尝试,可以帮助企业轻松的搭建基于容器技术的私有主机集群,并提供和公有云平台一致的容器管理服务。
3.更易于微服务和服务编排的实现。由于底层技术的差别,时速云在微服务架构和服务编排的实现上更有优势。用户之间的服务会有安全的隔离,平台内部通过自组网络进行安全通信,用户服务之间通过环境变量获取互相的信息,用户只需在一个服务中引用其他服务即可。
4.本地代码直接构建镜像支持。如果用户的代码没有托管到GitHub或者BitBucket等代码托管平台上,只有本地的代码或者可部署的应用,时速云同样支持从代码到镜像的构建。并且具有以下优势:支持 Windows、Linux和 Mac 三种平台;无需关联代码托管服务;如同使用本地Docker一样的体验;不需要打包源代码文件,保证用户的源代码安全。
5.完整的开放API,可以供开发者和SaaS厂商自由调度和连接。
黄启功:在TenxCloud时速云的平台构建中,我们对Docker本身并没有修改,而是对与之相关的技术进行了深入的研究和尝试,比如以下几个方面:
上面几个问题只是冰山一角,在容器云平台的构建中会遇到各种各样的挑战,在以后我们的线下活动中再慢慢和大家分享。
黄启功:容器部署运行上有轻量快速的特点,而它的内核共享的特性可能会给宿主机及网络环境带来安全问题。对于开发及运维人员,我们需要以容器特性为出发点,可以从以下几方面改善容器的安全问题:
InfoQ:Kubernetes已经发布了1.0版本,你们有了很多的Kubernetes和Mesos的使用经验。它们目前是否已经成熟可用?相比于Mesos,Kubernetes有什么优势和缺点吗?使用场景有什么不同?
黄启功:Kubernetes的快速发展得益于开源社区众多贡献者的努力,Kubernetes 1.0的发布,意味着这个容器集群管理系统可以正式应用到生产环境。
Kubernetes与Mesos同是集群管理系统,有着不同的应用场景和各自的优势。Kubernetes作为专门的容器集群管理框架,其轻量级,易迁移,快捷部署的优点显而易见。Kubernetes的灵感来源于Google的内部Borg系统,吸收了包括Omega在内的容器管理器的经验和教训,label、annotaion等功能的加入让容器分类检索信息标记管理更加便捷。在网络方面,Kubernetes可以和多种解决方案自然融合,插件化的构成方式让用户可以很方便的使用自定义的网络组件,进而解决了容器跨机通信的问题。在资源调度方面,Kubernetes目前以预测规划的方式为容器分配集群资源,保证局部资源拥挤的发生,并提供调度接口,允许用户使用定制的调度算法。
Mesos是Apache下的开源分布式资源管理框架,被称为是分布式系统的内核。其特点在于资源管理和调度,能够消除集群硬件的差异化。在使用场景上,Mesos可以作为资源池提供分配给上层的框架,同时支持多种用途的数据应用框架比如Hadoop、Kafka、Spark等。而Kubernetes是专门的容器集群管理器。它本身的服务代理可以在集群范围内探知用户服务,同时提供多种方式的服务组合,再加上其模型本身允许多容器共享资源的特点,Kubernetes从设计之初便提供了微服务实现的架构模型。
黄启功:近几年云计算技术飞速发展,不断出现新的技术,从IaaS到PasS,再到SaaS,越来越多的厂商也意识到这些技术潜在的价值,而云计算作为一种全新的低成本、高效率的IT服务方式必将带来行业的变革和创新。CaaS作为后起之秀,介于IaaS和PaaS之间,起到屏蔽底层系统(IaaS),支撑并丰富上层应用平台(PaaS)的作用,可以解决IaaS和PaaS的一些核心问题。比如IaaS很大程度上仍然是提供机器和系统,用户需要关心资源的管理、分配和监控,没有减少用户的使用成本,对各种各样的业务应用支持有限;PaaS则重点提供对主流应用平台的支持,但是没有统一的服务接口标准,对用户各种各样的个性化需求不能很好的满足。以容器为中心的CaaS则可以很好的将底层的IaaS封装成一个大的资源池,用户只要把自己的应用部署到这个资源池中即可,不需要关心资源的申请、管理等与业务开发无关的事情;同时CaaS又有一套唯一标准的镜像格式,可以把各种应用打包成统一的格式,并在任意平台之间部署迁移,容器服务之间又可以通过地址、端口服务来互相通信,做到既有序又灵活,既支持对应用的无限定制,又可以规范服务的交互和编排。CaaS必然会很大程度上替代IaaS,并对PaaS提供更好的支持,未来云服务将会以应用为中心,并让开发和运维人员更加关注业务上的改革和创新,而不用去担心资源的事情。
黄启功:在平台搭建和优化过程中,确实碰到了很多棘手的问题,这里分享几个例子: