⚡ localkube ⚡
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-machineto bring up a VM [1]
Getting started
- Run
spread cluster startto start localkube - Sanity check:
kubectl cluster-info[2]
Suggested workflow
docker buildthe 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:NodePortin your browser - When finished, run
spread cluster stopto 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 the run the cluster with.
Linux
make run-imageOS X/Windows
make docker-build run-imageThe 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 interative 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.