localkube
is the easiest way to use Kubernetes. It provides a Kubernetes cluster configured to run locally and optimized for rapid development.
The environment is intended to be used with Kubernetes development tool spread.
localkube
is a full Kubernetes 1.2 cluster, and has everything you need for a cluster in regards to networking (proxy, DNS, etc). Some more highlights:
- Single executable
- Single container
- Single process
- One command to start with
spread
It's great for:
- Playing around with Kubernetes without having to set up a cluster on GCP or AWS
- Offline and rapid development with Kubernetes
###Requirements
- spread
- kubectl
- Make sure Docker is set up correctly, including starting
docker-machine
to bring up a VM [1]
###Getting started
- Run
spread cluster start
to start localkube - Sanity check:
kubectl cluster-info
[2]
###Suggested workflow
docker build
the image that you want to work with [2]- Create Kubernetes objects that use the image build above
- Run
spread build .
to deploy to cluster [3] - Iterate on your application, updating image and objects running
spread build .
each time you want to deploy changes - To preview changes, grab the IP of your docker daemon and use
kubectl describe services/'SERVICE-NAME'
for theNodePort
, then put theIP:NodePort
in your browser - When finished, run
spread cluster stop
to stop localkube
[1] For now, we recommend everyone use a VM when working with localkube
[2] There will be a delay in returning info the first time you start localkube, as the Weave networking container needs to download. This pause will be fixed in future releases.
[3] spread
will soon integrate building (#59)
[4] Since localkube
shares a Docker daemon with your host, there is no need to push images :)
###Developing on localkube
For those interested in contributing to development, this will compile localkube executable, build an image with it inside, and run a container with the build image.
The docker
command should be setup for the Docker daemon you want to run the cluster with.
Linux
make run-image
OS X/Windows
make docker-build run-image
The apiserver will run on port 8080 of the Docker host.
###FAQ
Why use a local Kubernetes cluster in the first place?
Setting up a remote Kubernetes cluster takes too long, and you can't develop and test on a Kubernetes cluster offline with a remote cluster.
Why not use hyperkube
or monokube
for local dev?
We built localkube to integrate with spread
for an interactive workflow when developing with Kubernetes. localkube is built as a full Kubernetes 1.2 cluster, has pod networking set up with Weave, and uses spread
for a rapid development workflow.