Minikube is a tool for easily creating Kubernetes clusters locally.
It boasts features like supporting multiple container runtimes and even Load Balancers so you can easily test your deployments/services locally.
Minikube
lets you deploy your node as a VM, container or even bare metal. The default driver is VirtualBox
, however KVM/QEMU
usually performs better on Linux machines.
I assume that you'll be using Docker
as your CRI. On Arch Linux, you'll need to get the following packages using Pacman:
πΊ ~ β‘ β sudo pacman -S minikube libvirt qemu dnsmasq ebtables dmidecode
You then need to add your user to the libvirt
group and start the service:
πΊ ~ β‘ β sudo usermod -aG libvirt $(whoami)
πΊ ~ β‘ β sudo systemctl start libvirtd.service
πΊ ~ β‘ β sudo systemctl enable libvirtd.service
The libvirtd
service may fail due to certain missing binaries, be sure to check the status and resolve any issues you may have.
πΊ ~ β‘ β sudo systemctl status libvirtd.service
You can then run the validation tool:
πΊ ~ β‘ β virt-host-validate
QEMU: Checking for hardware virtualization : PASS
QEMU: Checking if device /dev/kvm exists : PASS
QEMU: Checking if device /dev/kvm is accessible : PASS
QEMU: Checking if device /dev/vhost-net exists : PASS
QEMU: Checking if device /dev/net/tun exists : PASS
QEMU: Checking for cgroup 'cpu' controller support : PASS
QEMU: Checking for cgroup 'cpuacct' controller support : PASS
QEMU: Checking for cgroup 'cpuset' controller support : PASS
QEMU: Checking for cgroup 'memory' controller support : PASS
QEMU: Checking for cgroup 'devices' controller support : PASS
QEMU: Checking for cgroup 'blkio' controller support : PASS
QEMU: Checking for device assignment IOMMU support : PASS
QEMU: Checking if IOMMU is enabled by kernel : PASS
QEMU: Checking for secure guest support : WARN (AMD Secure Encrypted Virtualization appears to be disabled in kernel. Add kvm_amd.sev=1 to the kernel cmdline arguments)
LXC: Checking for Linux >= 2.6.26 : PASS
LXC: Checking for namespace ipc : PASS
LXC: Checking for namespace mnt : PASS
LXC: Checking for namespace pid : PASS
LXC: Checking for namespace uts : PASS
LXC: Checking for namespace net : PASS
LXC: Checking for namespace user : PASS
LXC: Checking for cgroup 'cpu' controller support : PASS
LXC: Checking for cgroup 'cpuacct' controller support : PASS
LXC: Checking for cgroup 'cpuset' controller support : PASS
LXC: Checking for cgroup 'memory' controller support : PASS
LXC: Checking for cgroup 'devices' controller support : PASS
LXC: Checking for cgroup 'freezer' controller support : PASS
LXC: Checking for cgroup 'blkio' controller support : PASS
LXC: Checking if device /sys/fs/fuse/connections exists : PASS
Change the Minikube driver to kvm2:
πΊ ~ β‘ β minikube config set driver kvm2
It's nice to create a seperate kubeconfig file for Minikube
to use for the cluster:
πΊ ~ β‘ β touch config && export KUBECONFIG=$(pwd)/config
Finally, run minikube:
πΊ ~/repos β minikube start
π minikube v1.12.2 on Arch
βͺ KUBECONFIG=/home/lemagicien/repos/config
β¨ Using the kvm2 driver based on user configuration
π Starting control plane node minikube in cluster minikube
π₯ Creating kvm2 VM (CPUs=2, Memory=4000MB, Disk=20000MB) ...
π³ Preparing Kubernetes v1.18.3 on Docker 19.03.12 ...
π Verifying Kubernetes components...
π Enabled addons: default-storageclass, storage-provisioner
π Done! kubectl is now configured to use "minikube"
Your kubectl
should now be talking to the minikube cluster! If you run into any issues, you can check Minikube Docs and ArchWiki.
Top comments (0)