This blog provides the steps to install and run minikube on a Linux system running on IBM Power. You can use minikube for testing and learning the basics of Kubernetes. See the References section for more information on minikube and the concepts covered in this blog.
Prerequisites
Make sure that the following prerequisites are fulfilled before installing minikube:
-
Set up the yum repository on the target virtual machine (VM).
-
Update the system packages on Red Hat Enterprise Linux (RHEL):
$ yum -y update
-
Install the following packages: git, wget, tar, conntrack, and curl:
$ yum install -y git wget tar conntrack curl
-
Allocate at least 2 GB memory and two virtual CPUs (vCPUs) to the VM.
-
Make sure that you have the root privileges.
Steps
Follow the steps below to build and install minikube on your RHEL 8.6 or 8.7 Power VM.
Step 1: Install Docker and firewall
-
Add the Docker repository:
$ cat /etc/yum.repos.d/docker.repo
[docker]
name = docker
baseurl = https://download.docker.com/linux/centos/8/ppc64le/stable/
enabled = 1
gpgcheck = 0
-
Install the Docker packages:
$ sudo yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
-
Start and enable the Docker service:
$ systemctl start docker
-
Install, enable, and start the firewalld package:
$ yum install -y firewalld
$ systemctl start firewalld
$ systemctl enable firewalld
$ systemctl status firewalld
$ firewall-cmd --zone=public --add-masquerade --permanent
$ firewall-cmd --reload
Step 2. Install and set up the kubectl command
-
Add the Kubernetes repository:
#cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch
enabled=1
gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF
-
Install the kubectl command:
$sudo yum install -y kubectl
Note: If the kubectl command is not present in the /usr/bin/ directory, then copy the kubectl command from the /usr/local/bin to /usr/bin/ directory:
$ cp /usr/local/bin/kubectl /usr/bin/kubectl
$ which kubectl
/usr/bin/kubectl
Step 3. Install the cri-dockerd package using the source code
Before installing the cri-dockerd package, you'll need to install golang-1.18 or later version on the target VM and disable SELinux.
-
Install Golang on RHEL 8.6
On RHEL 8.6, the default version of Golang is 1.17.7-1.module so you'll need to install version 1.18 or later. We tested using version 1.18, which you can find here: https://go.dev/dl/go1.18.10.linux-ppc64le.tar.gz. However, if you want to install the latest version of Golang for ppc64le, 1.19, you can download it from here: https://go.dev/dl/go1.19.5.linux-ppc64le.tar.gz. After you've downloaded the files, go here to complete the install: https://go.dev/doc/install.
-
Install Golang on RHEL 8.7 or later:
$ yum install -y go
-
Check the version of Golang installed:
$ rpm -qa | grep golang
golang-1.18.4-1.module+el8.7.0+16015+724888d8.ppc64le
golang-src-1.18.4-1.module+el8.7.0+16015+724888d8.noarch
golang-bin-1.18.4-1.module+el8.7.0+16015+724888d8.ppc64le
-
Disable SELinux:
$ setenforce 0
$ sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
-
Run the following commands to build and install cri-dockerd:
git clone https://github.com/Mirantis/cri-dockerd.git
_cd cri-dockerd
mkdir bin
go build -o bin/cri-dockerd
mkdir -p /usr/bin/
install -o root -g root -m 0755 bin/cri-dockerd /usr/bin/cri-dockerd
cp -a packaging/systemd/* /etc/systemd/system
systemctl daemon-reload
systemctl enable cri-docker.service
systemctl enable --now cri-docker.socket
Step 4. Install the crictl package
$ VERSION="v1.25.0"
$ wget https://github.com/kubernetes-sigs/cri-tools/releases/download/$VERSION/crictl-$VERSION-linux-ppc64le.tar.gz
$ sudo tar zxvf crictl-$VERSION-linux-ppc64le.tar.gz -C /usr/bin
$ rm -f crictl-$VERSION-linux-ppc64le.tar.gz
Or go here to install crictl: https://github.com/kubernetes-sigs/cri-tools/releases
Step 5. Install minikube
-
Run the following commands to install the latest minikube stable release:
$ curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-ppc64le
$ sudo install minikube-linux-ppc64le /usr/bin/minikube
Start the minikube
$ /usr/bin/minikube start --driver=none --container-runtime=''
-
Check the status of the cluster:
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
cidistro004.aus.stglabs.ibm.com Pending control-plane 9m19s v1.25.3
If the node is not in the ready state, activate the network plug-in and then check the status again:
$ curl https://docs.projectcalico.org/manifests/calico.yaml -O
$ kubectl apply -f calico.yaml
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
cidistro004.aus.stglabs.ibm.com Ready control-plane 14m v1.25.3
-
Some dashboard features require the metrics-server add-on. Run the following command to enable all the features:
$ minikube addons enable metrics-server
Summary
In this blog, you learned how to install minikube on a Power system running RHEL for ppc64le. You also learned how to identify the software dependencies needed to download, build, and install minikube on the Power system. And finally, you learned how to use the Kubernetes CLI command to check the status of the minikube cluster.
Having access to a minikube cluster will enable you to learn the fundamentals of Kubernetes in a single-node cluster where you can test and experiment on new application features. Give it a try and please drop a comment below if you have any questions or feedback.
References