25

最近谷歌开源了谷歌的容器堆栈lmctfy。我不是很明白,我有几个问题。

lmctfy 和 lxc 和 docker 有什么区别?
Google 使用 lmctfy 解决了什么问题?

谢谢

4

1 回答 1

45

这里的 lmctfy 开发人员之一。我将尝试从单行开始,稍后再介绍更多细节。

Linux 内核支持 cgroups 进行资源隔离(cpu、内存、blockio、网络等),不需要启动虚拟机。它还提供命名空间来完全隔离应用程序的操作环境视图(进程树、网络、用户 ID、挂载)。

LXC 结合了 cgroup 和命名空间支持,为应用程序提供隔离环境。Docker 在 LXC 之上构建以向其添加图像管理和部署服务。

lmctfy 与 LXC 工作在同一级别。当前版本基于 cgroups 构建,下一个版本将添加命名空间支持。

鉴于 Docker 在更高级别上工作,我将只关注 lmctfy 和 lxc 之间的差异。

  • 资源管理 API:LXC API 是为支持命名空间而构建的,并且几乎透明地导出 cgroup 支持。Linux cgroup API 不稳定且难以处理。通过 lmctfy,我们尝试提供基于意图的资源配置,而无需用户了解 cgroup 的详细信息。

  • 优先级 - 过度使用和共享:lmctfy 旨在为资源共享和过度使用具有批处理工作负载的机器提供支持,这些工作负载可以在机器相对空闲时运行。所有应用程序都指定优先级和延迟要求。lmctfy 管理所有 cgroup 详细信息,以满足每个任务的优先级和延迟要求。

  • 程序化界面:lmctfy 是谷歌云应用管理的最低模块。它旨在与其他工具和程序一起使用。我们认为在它之上构建更复杂的工具链时,它的规范性和稳定性要好得多。

自 2007 年以来,我们一直 lmctfy 管理 Google 的所有资源隔离需求。到目前为止,它已被整合到 Google 基础架构的其他部分中。在重新设计期间,我们能够将这一层清晰地分离出来,并认为将它拿出来回馈会很有趣。

我在 9 月份就 lmctfy 进行了一次 Linux Plumbers 演讲。您可以在那里查看一些详细信息: http ://www.linuxplumbersconf.org/2013/ocw/events/LPC2013/tracks/153

幻灯片:http ://www.linuxplumbersconf.org/2013/ocw//system/presentations/1239/original/lmctfy%20(1).pdf

于 2013-10-05T16:28:36.097 回答