In this tutorial, I am going to install Minikube and its necessary dependencies on a Ubuntu server using the none driver.
What is Minikube?
Minikube is a tool that enables developers to run a single-node Kubernetes cluster locally on their machine. It simplifies Kubernetes development and testing by providing an easy-to-use environment that closely mimics a production Kubernetes cluster. With Minikube, developers can quickly prototype, deploy, and debug applications, making it an essential tool for building and testing Kubernetes-based solutions. Its benefits include fast setup, isolation, reproducibility, and the ability to develop and test Kubernetes applications without the need for a full-scale cluster.
Most users of this driver should consider the newer Docker driver, as it is significantly easier to configure and does not require root access. The ’none’ driver is recommended for advanced users only.
Table of contents
Install prerequisites for Minikube.
Minikube System Requirements
- 2 GB RAM or more
- 2 CPU / vCPU or more
- 20 GB free hard disk space or more
- Container or virtual machine manager, such as Docker, QEMU, Hyperkit, Hyper-V, KVM, Parallels, Podman, VirtualBox, or VMware Fusion/Workstation
A Linux VM with the following requirements:
- systemd or OpenRC
- A Container Runtime Interface (CRI), such as Docker or CRI-O
- Other dependencies such as CRI-CTL,conntrack,golang etc.
- cri-dockerd (Only if using Docker CRI)
Install Minikube and its components.
Systemd comes with default Linux installation so we are going to the next requirement.
Step 1: Install container Runtime interface (Docker)
If you still haven’t installed docker on your machine please visit our previous article to install docker on Ubuntu How to install it in ubuntu 20.04.
Step 2. Install Kubectl
Download the latest release with the command
curl -LO “https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl”
Download the Kubectl checksum file
curl -LO “https://dl.k8s.io/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl.sha256″
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
and check the version using the command kubectl version –client
Step 3. Install additional dependencies
For running Minkube on none driver we need to install these dependencies also
3.1 Installing Conntrack
minikube requires connection tracking (conntrack) dependency for the execution of integration tests.
sudo apt-get install conntrack
3.2 Installing crictl
crictl provides a CLI for CRI-compatible container runtimes. This allows the CRI runtime developers to debug their runtime without needing to set up Kubernetes components.
crictl can be downloaded from cri-tools release page:
VERSION="v1.26.0" # check latest version in /releases page wget https://github.com/kubernetes-sigs/cri-tools/releases/download/$VERSION/crictl-$VERSION-linux-amd64.tar.gz sudo tar zxvf crictl-$VERSION-linux-amd64.tar.gz -C /usr/local/bin rm -f crictl-$VERSION-linux-amd64.tar.gz
To install the latest minikube stable release on x86-64 Linux using binary download:
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
I am trying to run the minikube with the none driver so if you have completed the above steps and try to run the command
3.3 Installing go
Always check the latest version on the official documentation page. https://go.dev/dl
tar -C /usr/local -xvf go1.20.5.linux-amd64.tar.gz
Add the following lines to the end of the file:
go version go1.20.5 linux/amd64
3.4 Installing CRI-dockerd
Kubernetes v1.24+, and the Docker container runtime you’ll need to install cri-dockerd on your system.
Kubernetes interacts with Docker through the Container Runtime Interface (CRI) using the separate runtime called “CRI-dockerd.” CRI-dockerd acts as a bridge between Kubernetes and the Docker runtime.
Checkout the latest updates on this github repo for CRI-Dockerd
git clone https://github.com/Mirantis/cri-dockerd.git
go get && go build -o /usr/local/bin/cri-dockerd
mkdir -p /etc/systemd/system
cp -a packaging/systemd/* /etc/systemd/system
sed -i -e ‘s,/usr/bin/cri-dockerd,/usr/local/bin/cri-dockerd,’ /etc/systemd/system/cri-docker.service
systemctl enable cri-docker.service
systemctl enable cri-docker.socket
systemctl status cri-docker.socket
After executing all the commands below you can see the status of the service cri-docker.service using the command systemctl status cri-docker.service.
You must get a running output similar to the below image.
Step 4: Install container network plugins and starting the Minikube.
minikube start –driver=none –network-plugin=cni –cni=calico
Next, I am going to start the minkube using the none driver.
cni=calico specifies the Container Network Interface (CNI) plugin to be used with Minikube
cni=calico, you are instructing Minikube to use the Calico CNI plugin for networking in your Minikube Kubernetes cluster. This means that Calico will be responsible for managing network connectivity and policies for the containers running in the cluster.
Wait for something until the process completes and once the process gets finished you will be able to see all the pods running in the minikube cluster using the command
kubectl get pods -A
Great! That’s it you have successfully installed all the dependencies and started the Minikube cluster.
In this article, we have learned how to install Minikube and its dependencies on the ubuntu server.
In the coming articles, we will explore much about Minikube and its components.