Containers, Kubernetes, OpenShift on Power

 View Only

Install minikube on an IBM PowerVM running RHEL 8.6 or 8.7

By Vijay Puliyala posted Mon January 23, 2023 04:46 PM

  

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:

  1. Set up the yum repository on the target virtual machine (VM).

  2. Update the system packages on Red Hat Enterprise Linux (RHEL):

    $ yum -y update
  3. Install the following packages: git, wget, tar, conntrack, and curl:

    $ yum install -y git wget tar conntrack curl
  4. Allocate at least 2 GB memory and two virtual CPUs (vCPUs) to the VM.

  5. 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

  1. 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
    ​
  2. Install the Docker packages:

    $ sudo yum install -y  docker-ce docker-ce-cli containerd.io docker-compose-plugin​
  3. Start and enable the Docker service:

    $ systemctl start docker​
  4. 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

  1. 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
  2. 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.

  1. 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.

  2. Install Golang on RHEL 8.7 or later:

    $ yum install -y go 
  3. 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
  4. Disable SELinux:

    $ setenforce 0
    $ sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux  
  5. 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

  1. 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=''
    
  2. 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
    
  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

Permalink