Hypernetes实现多租户CaaS,且无需客户操作系统
Hypernetes 使用一个最小Linux内核取代了虚拟机中的客户操作系统作为容器的宿主,这样就避免了运行全功能操作系统的开销。
HyperHQ 在十月份发布了Hypernetes。InfoQ采访了该公司的前开发大使 Thibault Bronchain 和 VisualOps 创始人兼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而不是Mesos和Swarm的原因:
我们认为,Kubernetes是最可靠、最容易使用的调度器。我们对使用其他调度器实现Hyper持开放态度,但我们仍然要制定我们的路线图。
按照Bronchain的说法,可以使用其他任何Linux内核取代定制的Hyper内核,但目前并没有文档说明,而且也不容易做。
OpenStack是一个用于构建和管理云的IaaS框架,Hypernetes使用了它的部分组件。它使用OpenStack的身份和服务目录提供程序 Keystone 进行身份验证和授权。它还使用了其他的OpenStack组件,如用于存储的 Cinder 和 Ceph ,用于网络管理的 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
</div>