@lsmn
2015-12-29T06:44:01.000000Z
字数 1712
阅读 3079
Hypernetes
Kubernetes
Linux
VM
Hypernetes是Kubernetes的一个分支,它使用多个开源项目在虚拟机内的最小Linux内核上运行容器,消除了运行完整客户操作系统的开销。
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是一个操作系统,内置支持服务发现,并且运行在上面的容器可以共享配置。