Update 01-24-21: there’s new blog to succeed this article here.

1. Install Kubectl

Redhat-based commands:

# Add a new repo and use Yellowdog Updater Modified (yum) install
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF
yum install -y kubectl

Debian-based commands:

# Obtain the kubectl public key for Apt. Pipe key to main then append output to apt sources directory 
sudo apt-get update && sudo apt-get install -y apt-transport-https
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://kubernetes.io/blog/2023/08/31/legacy-package-repository-deprecation/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubectl

2. Install Minikube

Although Minikube is useful for testing and development purposes, labs and production would necessitate multi-node Kubernetes systems as illustrated here.

For purposes of this article, Minikube is an implementation of Kubernetes cluster onto localhost using kvm2 driver or VirtualBox (prerequisites). VT-x/AMD-v virtualization must also be enabled in system BIOS for this to work. It’s a recommended step to test this simple deployment prior to applying more advanced deployments. Minikube works by starting a single node kubernetes cluster locally. It conveniently packages and configures a Linux VM, Docker and all Kubernetes components, optimized for local environment, a la carte.

First, install the virtual environment dependency. Minikube requires either VirtualBox or KVM. Since the latter is more robust and production-grade, here are some commands for various popular linux flavors.

Debian-based systems:

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

Redhat-based systems:

sudo yum install libvirt-daemon-kvm qemu-kvm
sudo systemctl enable libvirtd.service
sudo systemctl start libvirtd.service

# Add current login to libvirt group
sudo usermod -a -G libvirt $(whoami)

# Join group
newgrp libvirt

# Install driver
curl -LO https://storage.googleapis.com/minikube/releases/latest/docker-machine-driver-kvm2 \
&& sudo install docker-machine-driver-kvm2 /usr/local/bin/

Second, Minikube is then ready to be plugged into the system. Here’s a manual method:

curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && sudo install minikube-linux-amd64 /usr/local/bin/minikube

Minikube Commands:

# Set kvm2 as default driver for minikube, instead of VirtualBox
minikube config set vm-driver kvm2
# Initiate minikube
minikube start
# Deploy a hello-world container
kubectl run hello-minikube --image=k8s.gcr.io/echoserver:1.4 --port=8080
# Expose deployment service to the external network zone (NodePort)
kubectl expose deployment hello-minikube --type=NotePort
# List all pods of current deployment
kubectl get pod
# Check exposed hello-minikube html contents
curl $(minikube service hello-minikube --url)
# Delete the deployment
kubectl delete deployment hello-minikube
# Stop the local cluster
minikube stop
# Terminate minikube
minikube delete