A big congratulations to the Kubernetes project and community on releasing version 1.0 to the public! Kubernetes (a.k.a. k8s) is an open source system for managing containerized applications across multiple hosts called a cluster. Over the past six months we’ve had a small team of “container people” working to make sure that we could deliver the best Kubernetes experience on the first day of the version 1.0 release! And, at last, that day has come.
Here’s what you can do today:
- Deploy a Kubernetes cluster with version 1.0 from the Juju charm store on the following cloud environments: Amazon Web Services (AWS), Google Cloud Engine (GCE), HP Public cloud (and any other OpenStack cloud), Microsoft Azure (yes, you read that correctly), KVM, and bare metal via MAAS.
- Deploy a Kubernetes cluster with the source code from your local laptop, on the same public cloud environments. This is our developer story where Juju handles the operations to create a cluster so you can work on your contribution to the Kubernetes project!
Find all the charms and bundles in the cluster/juju directory in the kubernetes project on github: https://github.com/GoogleCloudPlatform/kubernetes/tree/master/cluster/juju
To use our magic you will need to have Juju installed (see here for native setup or here for using Docker). We maintain a Juju bundle as part of the Kubernetes repository. Then you can hack and launch a cluster easily using semantics common to the k8s project.
Deploy Kubernetes v1.0
Our first goal is to make it simple for anybody to deploy a Kubernetes cluster v1.0. So we’ve added a kubernetes-cluster bundle to the charm store that does just that: https://jujucharms.com/u/kubernetes/kubernetes-cluster
sudo add-apt-repository ppa:juju/stable
sudo apt-get update
sudo apt-get install juju-quickstart
Now just deploy the bundle from either the charm store or the kubernetes github project.
juju quickstart u/kubernetes/kubernetes-cluster
Make sure you follow the directions in the README, which you can find here:
The resulting cluster consumes 4 virtual machines or units. One machine runs the kubernetes-master, two kubernetes nodes with docker installed on different hosts. One machine for etcd to provide coordination and shared configuration. The flannel-docker subordinate is installed on docker units, and related to etcd – which enables the different container hosts to communicate with each other on an overlay network.
Deploy the local development environment
Our secondary goal was to ensure that developers could easily deploy a kubernetes cluster without having to know how to run a cluster and connect all the pieces. So developers can deploy Kubernetes right from their own git directory and see their changes in the cluster right away. For those with Juju installed just: git clone, hack hack hack, and deploy a cluster with your changes. Since we are integrated in the Kubernetes github project use the Kubernetes semantics to deploy the cluster:
git clone https://github.com/GoogleCloudPlatform/kubernetes.git
When a small cluster is not enough!
The default Juju cluster contains two Docker hosts and many containers can run on each host. For large applications you may need to add more Kubernetes nodes. To scale out, deploy additional units of the docker charm.
juju add-unit docker
All the supporting services: Kubernetes node, as well as flannel overlay networking, will automatically be added and configured in the existing cluster.
Moving forward post-1.0
Now that Kubernetes 1.0 is released we’re inviting you to deploy these charms to your environments. Kick the tires, break stuff, and by all means, let us know how it’s working out for you. All of this work is Open Source, and we’ll gladly work with the community on making it better.
The current cluster uses Flannel to create an Software Defined Network. Thanks to the pluggable Juju model we can replace Flannel with other SDN technologies such as Docker’s experimental overlay networking support. This means as our bundle continues to improve post 1.0 the same set of instructions here will always reflect the deployment of a best of breed Kubernetes cluster.
You’ll find us on #juju on freenode (if you want to talk Juju), and of course you can find us in #google-containers. Also check out the mailing list.
Happy Containerizing! Is that even a word?