BT

Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ

Topics

Choose your language

InfoQ Homepage News Hypernetes Enables Multi-Tenant CaaS Without a Guest OS

Hypernetes Enables Multi-Tenant CaaS Without a Guest OS

This item in japanese

Bookmarks

Hypernetes replaces the guest operating system in a virtual machine (VM) to host the containers atop a minimalist Linux kernel thus avoiding the overhead of running a full-fledged OS.

HyperHQ released Hypernetes in October. InfoQ asked Thibault Bronchain, former developer evangelist at the company, and Peng Zhao, founder of VisualOps and an investor in Hyper, to elaborate on how it works.

Hypernetes leverages the Hyper project for hosting containers, some components of OpenStack - an Infrastructure-as-a-Service (IaaS) software - and Kubernetes, a framework for managing clusters of Linux containers. Hypernetes is a fork of Kubernetes.

One of the components of Hypernetes - the Hyper project - provides a runtime for containers on bare metal. Usually, containers are launched on a guest operating system inside a VM. Hyper “flattens” this guest OS/VM layer by launching a VM with a small Linux kernel, called the Hyper kernel. This is the key difference between Hyper and other container runtimes. Bronchain added to this point:

Hyper precisely replaces the “guest OS” by a single Linux Kernel. Doing so, the VMs provisioned are super light, and super fast to provision. They boot in sub-second time, and don't weigh much more than a Linux Container. 

After Hyper boots the kernel, an init service called HyperStart creates a Pod. A Pod is a collection of container images that are part of the same logical group. It is a concept borrowed from Google. For example, in a microservices architecture, a Pod might consist of helper programs like logging and monitoring. Bronchain explained the reasons behind choosing Kubernetes over tools like Mesos and Swarm:

We believe Kubernetes is the most reliable and easiest scheduler to use. We're open to implement Hyper to other schedulers though. We are still modeling our roadmap.

The customized Hyper kernel can be replaced with any other Linux kernel, according to Bronchain, even though it’s not documented and easy to do so now.

OpenStack is an IaaS framework for building and managing clouds and Hypernetes uses some of its components. Keystone, OpenStack’s identity and service catalog provider, is used for authentication and authorization. Other OpenStack components used are Cinder and Ceph for storage and Neutron for network management. This is a unique use case for OpenStack itself as its components are usually not used outside an OpenStack deployment.

Docker as a container runtime has matured and has been widely adopted. So why would somebody want to adopt an alternative still in its infancy? Zhao had this to say:

The world is moving to the public cloud. No matter how good the performance of a Linux container is, people run them in VMs. Therefore, it makes sense to make a VM run like a Container to simplify the infra stack and enable new services. Also, it is hard to imagine that everyone should be forced to use a single kernel version on a container-based public cloud.

There are other players in the ecosystem like Ubuntu’s LXD, touted as the “Linux container hypervisor”. In response to InfoQ’s question about how Hypernetes compares to LXD, Zhao said:

LXD is still Linux container-based, but is able to emulate a full VM with extra security. Hyper, however, is trying to deliver the app-centric experience of Docker. Though Hyper uses hypervisors, it doesn't run like a full VM.

Another similar offering is CoreOS, a lightweight Linux based operating system especially designed to host containers using runtimes like Docker and rkt. However, where Hyper launches just a mini-kernel to host the containers, CoreOS is an operating system with inbuilt support for service discovery and configuration sharing for the containers running on top of it. 

The Hypernetes source code and instructions to deploy it can be found on GitHub.

Rate this Article

Adoption
Style

BT