My Wiki!

Minikube for dev

1. Headline

1.1 Minikube installation (Ubuntu 18.04)

1.1.1 Install docker

  sudo apt-get remove docker docker-engine docker.io
  sudo apt install docker.io
  sudo systemctl start docker
  sudo systemctl enable docker
  docker --version

1.1.2 Install minikube

Install kvm (optional on VM):

  sudo apt-get -y install qemu-kvm libvirt-bin virt-top  libguestfs-tools virtinst bridge-utils
  sudo modprobe vhost_net
  sudo lsmod | grep vhost
  echo "vhost_net" | sudo tee -a /etc/modules

Install minikube:

wget https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
chmod +x minikube-linux-amd64
sudo mv minikube-linux-amd64 /usr/local/bin/minikube
minikube version

Install kubectl:

  curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl
  chmod +x kubectl
  sudo mv kubectl  /usr/local/bin/
  kubectl version -o json

Install docker kvm driver:

  curl -LO https://storage.googleapis.com/minikube/releases/latest/docker-machine-driver-kvm2
  chmod +x docker-machine-driver-kvm2
  sudo mv docker-machine-driver-kvm2 /usr/local/bin/

Start minikube with profile:

  minikube start --vm-driver=kvm2 -p visrc.kube --memory=4096

On a VM run vm-driver NONE and no multi-profile and requires sudo:

  sudo minikube start --vm-driver=none
  

Delete minikube profile

  minikube delete -p intg-test 

Note that after the cluster is deleted, the now-empty~/.minikube/profiles/intg-test subfolder and the k8s context aren’t deleted automatically. Some manual clean-up is necessary.

1.2 Using minikube in local env

The docker command line in the host machine can be configured to utilize the docker daemon within minikube by running:

$ eval $(minikube docker-env)

There are several reasons as to why it is useful to use the minikube docker daemon:

  • Docker images to be deployed into the local cluster don’t have to be pushed to a container registry and pulled in by Kubernetes, they can be built inside the same docker daemon as minikube and be used directly (change deployment yaml pull policy from alwaysPull to IfNotPresent, more about this later).
  • As a result, it’s good for running local experiments as has a much faster turn around time especially if an external registry is required.
  • It applies when you have a single VM (node) docker cluster and want to use the docker daemon inside the VM.

To confirm that the docker cli is using the minikube docker daemon, run:

  $ docker info | grep Name
  Name: minikube

In order to revert back to the host docker daemon, simply run:

  $ eval $(minikube docker-env -u)
  

If the workstation goes sleep, stop and start minikube again

If you started your minikube instance with profile

  minikube start -p ClusterName

Then you'll have to put the profile name for each command

  minikube docker-env -p ClusterName

So you finally can run next command to get it work

  eval $(minikube docker-env -p YourClusterName)
  

1.3 Tools

Validating yaml:

  #install yamllint
  yamllint kubernetes/django/deployment.yaml
  

Navigation