In this post we take a look at Kubernetes and help you setup a Kubernetes Cluster on your existing OpenStack Cloud using its Orchestration Service Heat. This Kubernetes Cluster should only be used as a Proof of Concept.
Technology involved:
Kubernetes: https://github.com/GoogleCloudPlatform/kubernetes
CoreOS: https://coreos.com/
etcd: https://github.com/coreos/etcd
fleet: https://github.com/coreos/fleet
flannel: https://github.com/coreos/flannel
kube-register: https://github.com/kelseyhightower/kube-register
The Heat Template used in this Post is available on Github.
What is Kubernetes?
Kubernetes allows the management of docker containers at scale. Its core concepts are covered in this presentation, held at the recent OpenStack&Docker Usergroup meetups.
A complete overview of Kubernetes is found on the Kubernetes Repo.
Architecture
The provisioned Cluster consists of 5 VMs. The first one, discovery, is a dedicated etcd host. This allows easy etcd discovery thanks to a static IP-Address.
A Kubernetes Master host is setup with the Kubernetes components apiserver, scheduler, kube-register, controller-manager as well as proxy. This machine also gets a floating IP assined and acts as a access point to your Kubernetes cluster.
Three Kubernetes Minion hosts are setup with the Kubernetes components kubelet and proxy.
HowTo
Follow the instructions on the Github repo to get your Kubernetes cluster up and running:
https://github.com/icclab/kubernetes-on-openstack-demo
Examples
Two examples are provided in the repo:
- a slightly modified version of the guestbook example from the Kubernetes repo
- a simple nginx setup