I’ll be taking Red Hat’s EX180 exam in a couple of weeks, so I thought I’d get a homelab set up to go through study material.
EX180 is Red Hat’s certified specialist in containers and Kubernetes exam.
EX180 Homelab Pre-requisites
In order to deploy CodeReady containers, we need a server that meets the following hardware requirements:
- 4 virtual CPUs (vCPUs),
- 9GB of RAM,
- 31GB of disk space.
With regards to OS, we are going to use Rocky Linux 8.
A Red Hat account is required in order to download a pull-secret from Red Hat Hybrid Cloud Console.
SELinux is set to enforcing mode on the server.
The Plan
We have a physical server with 12 CPU cores and 32GB of RAM that runs Rocky Linux 8.
$ grep -c processor /proc/cpuinfo 12
$ grep MemTotal /proc/meminfo MemTotal: 32658632 kB
We are going to use the server to install Podman, set up Qemu-KVM hypervisor and deploy OpenShift using CodeReady containers. We will then use the environment to prepare for the EX180 exam.
Do note that OpenShift VM needs 4 CPUs and 9GB of RAM to run as mentioned in the pre-requisites section.
Install Podman
Install podman
package:
$ sudo yum install -y podman
Check software version:
$ podman version
Install Libvirt with QEMU-KVM
KVM is ubiquitous in a way that its built into Linux and requires virtually (no pun intended) no effort to set it up. KVM lets you turn Linux into a type 1 bare-metal hypervisor.
Install the necessary packages:
$ sudo yum install -y qemu-kvm libvirt $ sudo systemctl enable --now libvirtd $ sudo usermod -aG libvirt,qemu ${USER}
Install OpenShift
Download the pull secret from the Pull Secret section of the CRC page on the Red Hat Hybrid Cloud Console and save it as pull-secret.json
.
Download the latest release of CRC for your platform.
$ cd /tmp $ curl -sSL -o crc-linux-amd64.tar.xz https://developers.redhat.com/content-gateway/rest/mirror/pub/openshift-v4/clients/crc/latest/crc-linux-amd64.tar.xz $ tar xvf ./crc-linux-amd64.tar.xz $ rm -f ./crc-linux-amd64.tar.xz $ sudo cp ./crc-linux-*-amd64/crc /usr/local/bin/
Check the version of crc
:
$ crc version CRC version: 2.10.2+1bc2e5a OpenShift version: 4.11.7 Podman version: 4.2.0
In this case we are going to use OpenShift 4.11 which is based on Kubernetes 1.24.
Configure CodeReady containers:
$ crc config set cpus 4 $ crc config set memory 10240 $ crc config set disk-size 31 $ crc config set kubeadmin-password changeme $ crc config set consent-telemetry no $ crc config set enable-cluster-monitoring no $ crc config set disable-update-check yes
CRC will refuse to run as root, therefore you have to start the process as a regular user.
Make sure that your /proc
filesystem is not mounted with hidepid=2
option. This option hides the /proc
from your shell that uses polkit.
$ crc setup $ crc start --pull-secret-file ./pull-secret.json
Retrieve the password for the developer and kubeadmin users:
$ crc console --credentials To login as a regular user, run 'oc login -u developer -p developer https://api.crc.testing:6443'. To login as an admin, run 'oc login -u kubeadmin -p changeme https://api.crc.testing:6443'
Access OpenShift Cluster with oc
Use the oc
command line interface:
$ eval $(crc oc-env)
Log in to OpenShift as admin:
$ oc login -u kubeadmin https://api.crc.testing:6443
Check the node status:
$ oc get no NAME STATUS ROLES AGE VERSION crc-lgph7-master-0 Ready master,worker 44d v1.24.0+3882f8f
What’s Next?
We will look into building images and running container with Podman.
I tried to setup a homelab server:
8 CPUs
16GB of RAM
200GB of disk space
OS Centos Stream 8 … That’s the only obvious difference.
Errors vary.
I don’t want to reinstall the OS. Any ideas? Just curious if you may notice something really obvious. Maybe more memory?
What errors do you get?
The problems begin after:
$ crc start
#==========
At times… the ssh connection drops
#==========
Then it’s:
Failed to connect to the CRC VM with SSH — virtual machine might be unreachable: Temporary error: ssh command error:
command : exit 0
err : Error getting config for native Go SSH: ssh: no key found
(x300)
It is possible that the OpenShift VM got broken somehow. You can try the following to see if it helps:
$ crc version
CRC version: 2.12.0+74565a6
OpenShift version: 4.11.18
Podman version: 4.2.0
$ crc status
CRC VM: Running
OpenShift: Unreachable (v4.11.18)
RAM Usage: 0B of 0B
Disk Usage: 0B of 0B (Inside the CRC VM)
Cache Usage: 16.18GB
Cache Directory: /home/centos/.crc/cache
It looks like your OpenShift VM is unreachable. Could you start the VM and see if there is anything logged to standard output? You can use
virt-manager
for that.virt-manager displays crc Running.
When you open virt-manager and use its console view for the crc virtual machine, does it show any errors at all?
After following your steps – specifically: rm -r /home/centos/.crc
I see a different error message…
#===============
INFO Waiting for kube-apiserver availability… [takes around 2min]
Failed to update cluster pull secret: Temporary error: ssh command error:
command : timeout 5s oc get secret –context admin –cluster crc –kubeconfig /opt/kubeconfig
err : Process exited with status 124
(x11)
#================
… I see something strange… this is a fresh Centos Stream 8 install and /opt is … empty
I don’t use CentOS Stream 8 as it’s not production ready therefore cannot advise much I’m afraid, but it does work with Rocky Linux 8. You may want to reach out to CentOS Stream community to see if anyone’s got a similar issue.
Ok. Reinstalling to Rocky.
I’ll try Rocky Linux 8
I tried RockyLinux 8 and had similar problems. I increased the HW resources and it works now on Centos 8 Stream.
CRC VM: Running
OpenShift: Running (v4.12.1)
RAM Usage: 6.564GB of 9.399GB
Disk Usage: 16.84GB of 32.74GB (Inside the CRC VM)
Cache Usage: 16.53GB
Cache Directory: /home/centos/.crc/cache
Out of curiosity, have you tried increasing hardware resources on Rocky Linux?
I did not try to increase the HW on Rocky Linux. Just did a fresh re-install with Cent8 Stream.
– 40 virtual CPUs (vCPUs): from 8
– 70 GB of RAM: from 16 GB
– 3.4 TB of disk space: from 200 GB
Thanks for letting me know, so your problem had nothing to do with Rocky Linux but hardware resources.