Hypernetes 实现多租户 CaaS,且无需客户操作系统

阅读数:1449 2015 年 12 月 30 日

Hypernetes使用一个最小 Linux 内核取代了虚拟机中的客户操作系统作为容器的宿主,这样就避免了运行全功能操作系统的开销。

HyperHQ在十月份发布了 Hypernetes。InfoQ 采访了该公司的前开发大使Thibault BronchainVisualOps创始人兼 Hyper 投资人Peng Zhao,他们详细谈论了 Hypernetes 的工作原理。

Hypernetes 使用Hyper项目作为容器宿主,并使用了OpenStack(一种基础设施即服务软件)的一些组件和Kubernetes(一种管理Linux 集群的框架)。Hypernetes 由 Kubernetes 派生而来。

Hypernetes 的其中一个组件——Hyper 项目——提供了一个裸机上的容器运行时。通常,容器要在虚拟机里的一个客户操作系统上启动。Hyper 使用一个名为HyperKernel的小型 Linux 内核启动 VM,将客户 OS/VM 层“扁平化”。这是 Hyper 与其他容器运行时的主要不同之处。关于这一点,Bronchain 补充说:

Hyper 正是使用一个单独的 Linux 内核取代了“客户操作系统”。这样配置出来的 VM 是超轻量级的,而且配置非常快。它们的启动时间是亚秒级的,不会过多增加 Linux 容器的启动时间。

在 Hyper 启动内核以后,名为 HyperStart 的初始化服务会创建一个 Pod。一个 Pod 是一个容器镜像集合,而这些镜像是同一个逻辑组的一部分。这是从谷歌借用的一个概念。例如,在一个微服务架构中,一个 Pod 可能包含多个辅助程序,如日志和监控。Bronchain 解释了他们选择 Kubernetes 而不是MesosSwarm的原因:

我们认为,Kubernetes 是最可靠、最容易使用的调度器。我们对使用其他调度器实现 Hyper 持开放态度,但我们仍然要制定我们的路线图。

按照 Bronchain 的说法,可以使用其他任何 Linux 内核取代定制的 Hyper 内核,但目前并没有文档说明,而且也不容易做。

OpenStack 是一个用于构建和管理云的 IaaS 框架,Hypernetes 使用了它的部分组件。它使用 OpenStack 的身份和服务目录提供程序Keystone进行身份验证和授权。它还使用了其他的 OpenStack 组件,如用于存储的CinderCeph,用于网络管理的Neutron。对于 OpenStack 而言,这是一个独特的用法,因为其组件通常都不在 OpenStack 部署之外使用。

作为一个容器运行时,Docker 已经成熟并被广泛采用。那么为什么会有人想要使用一种尚处于发展初期的替代方案呢?Zhao 是这样说的:

世界正在向公有云靠近。不管 Linux 容器的性能有多好,人们都是在虚拟机里运行容器。因此,使虚拟机像容器一样运行,以便简化基础设施栈,实现新服务,这是有意义的。而且,很难想象,在一个基于容器的公有云上,每个人都被迫使用一个单独的内核版本。

在这个生态系统里还有其他的玩家,如Ubuntu 的 LXD就被称为“Linux 容器管理程序”。在回答 InfoQ 关于 Hypernetes 与 LXD 相比怎么样的问题时,Zhao 说:

LXD 仍然是基于 Linux 容器,但能够模拟一个完整的 VM,并且具有额外的安全特性。不过,Hyper 试图提供的是一种以应用为中心的 Docker 体验。虽然 Hyper 使用“管理程序(hypervisor)”,但它不会像一个完整的 VM 那样运行。

另一个类似的产品是CoreOS,这是一个基于 Linux 的、轻量级的操作系统,专门设计用于托管使用诸如 Docker、rkt这样的运行时的容器。不过,Hyper 只启动一个最小的内核用于托管容器,而 CoreOS 是一个操作系统,内置支持服务发现,并且运行在上面的容器可以共享配置

GitHub 提供了 Hypernetes 的源代码以及部署说明

查看英文原文:Hypernetes Enables Multi-Tenant CaaS Without a Guest OS