Google应用都运行在容器中

作者:浮夸的晓编 分类:互联网 发布于:2014-6-17
  Google现在已经使用容器来运行它们集群中的所有应用,每周会启动超过20亿个容器。

  Google云平台的高级软件工程师Joe Beda在Gluecon上做了一个关于Google如何使用Linux容器技术的报告。他在报告中声称现在Google所有的应用都是运行在容器中的。这导致的结果就是Google每周要启动超过20亿个容器,每秒钟要启动超过3000个容器,这还不包括那些长期运行的容器。

  Google自从2004年起就已经开始使用容器技术了,于2006年发布了cgroups,并在去年创建了名为Let Me Contain That For You (lmctfy)的项目。Imctfy是Google开源版本的容器栈,它提供了用来代替LXC的Linux应用容器。当在单台机器上运行多个应用时,这些容器支持应用间的资源隔离,而且这会给人感觉这些应用是独自占用机器而运行的。这些应用可以知道容器的存在,这样它们就可以创建和管理它们自己的子容器了。

  Google的软件工程师Rohit Jnagal对Imctfy发表了评论:

  从2007年起,我们就已经用Imctfy来管理Google所有的与资源隔离性相关的需求了。到现在,它已经广泛使用在Google的各个基础设施中。在重新设计Imctfy的过程中,我们能够干净利落地将这一层分离出来(译者注:为了将Imctfy开源,需要对其重新设计,将其与Google的其他业务相关的代码进行分离),并且我们认为将它拿出来回报给开源社区是一件非常令人愉快的事情。

  他还介绍了Imctfy与LXC之间的主要区别:

  资源管理API:显而易见,LXC的API是支持命名空间的,并且支持导出cgroup。而对于Imctfy,Google则试图提供一种基于用户使用意图的资源配置,这种配置方式就不再需要用户了解cgroup的具体细节内容了,因为cgroup的API可能不是很稳定并且难以应付。

  优先级:Imctfy提供了对资源共享和过量配置的支持,过量配置的机器上的批处理工作负载可以在机器相对空闲的时候运行。所有应用都会声明一个优先级和一些与延迟相关的需求,Imctfy会通过管理所有的cgroup的具体细节内容来满足每个任务的需求。

  编程接口:对Google云而言,Imctfy是应用管理的最底层的模块。它会和其他工具以及程序一起协同工作,而且在构建位于其上层的更加复杂的工具链时,它具有更好的针对性和稳定性。

  Google同样也正在将容器集成到Google云平台中。Google所开源的节点容器管理器(node container manager)是一个小的Python代理,它旨在通过一个YAML清单(manifest)来管理一组Docker容器的。一个用来管理Google计算引擎(Google Compute Engine)上运行的容器的公开预览版本的系统已经可以使用了,它支持容器清单,并可以在启动时创建容器。该软件是基于Debian 7的,并且包含有Docker runtime和节点容器管理器。

  Docker同样能够利用Imctfy的优势,因为现在已经有一个针对Docker的Imctfy驱动,这还只是一个处于早期阶段的集成方案。由于有了这个新的功能,从Docker 0.9以后,我们就可以在不包含LXC的环境中运行容器了。(来源:Infoq)