Local Environment

The most basic tooling needed for running kubernetes locally is minikube and kubectl, both are upstream Google projects.

Minikube

Upstream Documentation: https://minikube.sigs.k8s.io/docs/start/

Minikube is a tool which enables you to run a single kubernetes node locally, usually isolated in a VM, but it can run in a container runtime as well.

There is no minikube RPM in fedora repositories but we have an open issue to work on it if you are interested: https://pagure.io/kube/fedora-kube/issue/1

Minkube has a few configuration paramaters which can be listed by running minikube config.

It is a good idea to set the following if you want to:

  • driver: sets the default driver to run minikube: minikube config set driver kvm2 (vm-driver still works but it is outdated)

  • cpus: the amount of CPUs for minikube to use: minikube config set cpus 4

  • memory: the amount of available memory in the instance/VM (Mbs): minikube config set memory 4000

  • storage: the amount of available storage: minikube config set storage 100GB

There is a known issue where a pod won’t be able to reach its own service by using the service name but there is a manual fix for it:

minikube ssh
sudo ip link set docker0 promisc on

KubeCTL

KubeCTL is the kubernetes CLI tool to interact with a kubernetes cluster, you can download it from the upstream kubernetes website: https://kubernetes.io/docs/tasks/tools/install-kubectl/

You tell kubetl which configfile to use by changing the value of the KUBECONFIG env var, it will use $HOME/.kube.config if this env variable is not set (minikube will update your default config file with the proper url/credentials).