This guide will walk you through the steps to setting up an
environment to run Kubernetes (K8S) on your laptop or workstation.
You'll need to install Docker if you haven't already and
Kubernetes client (kubectl).
Update: For guide using Minikube, a common local K8S environment,
checkout Run a
Minikube Local Docker Registry and Dashboard using Helm
export K8S_VERSION=$(curl -sS https://storage.googleapis.com/kubernetes-release/release/stable.txt)
Now run the Kubernetes Hyperkube image. This image will run
additional Kubernetes images used to orchestrate your
cluster. I've added --restart=always so that Kubernetes will be
relaunched on reboots, or if it dies. You may tweak these starting
parameters at some point(i.e. --cluster-dns), but they ought to provide
working defaults for now.
export ARCH=amd64
docker run -d \
--volume=/:/rootfs:ro \
--volume=/sys:/sys:rw \
--volume=/var/lib/docker/:/var/lib/docker:rw \
--volume=/var/lib/kubelet/:/var/lib/kubelet:rw \
--volume=/var/run:/var/run:rw \
--net=host \
--pid=host \
--privileged \
--restart=always \
gcr.io/google_containers/hyperkube-${ARCH}:${K8S_VERSION} \
/hyperkube kubelet \
--containerized \
--hostname-override=127.0.0.1 \
--api-servers=http://localhost:8080 \
--config=/etc/kubernetes/manifests \
--cluster-dns=8.8.8.8 \
--cluster-domain=cluster.local \
--allow-privileged --v=2
Verify your setup is running. You should see a number of kubernetes
containers in the list.
docker ps
After you verify the docker containers exist, you should verify
you can connect to the Kubernetes cluster.
kubectl get pods --all-namespaces
Note for macOS users: If that doesn't work, you may need to port forward to the virtual machine vm.
docker-machine ssh `docker-machine active` -N -L 8080:localhost:8080
docker run -d -p 5000:5000 --restart=always --name registry registry:2
Build an image and tag it.
docker build -t hello-node .
docker tag hello-node localhost:5000/hello-node
Push the image to your local registry.
docker push localhost:5000/hello-node
Now run a deployment in Kubernetes using the image located on your
local registry.
kubectl run hello-node --image=localhost:5000/hello-node --port=8888
You should now have a deployment of your image, in my case hello-node, running using your private local registry, Kubernetes and Docker. You can verify by running
kubectl get deployments
You may also connect to your pod via port forwarding to verify connectivity. For example, I forward traffic from 8090 on my localhost to port 8080 on a jenkins pod. Now when I point my browser to localhost:8090, I talk to the jenkins web service.
kubectl port-forward jenkins-3828317938-il1gc 8090:8080