Configure Minikube with Podman on CentOS Stream 10

Minikube with Podman CentOS Stream 10

Learn how to configure Minikube with Podman on CentOS Stream 10. This guide walks you through installation, configuration, and testing, enabling you to run Kubernetes locally with Podman.

Table of Contents

🔈Introduction

In the world of container orchestration, Minikube has earned its place as a top choice for local Kubernetes clusters. It is lightweight, fast, and provides a reliable environment for testing and development. But what if you prefer using Podman as your container runtime over the default Docker runtime? In this blog post, we’ll walk through the steps required to configure Minikube with Podman on CentOS Stream 10, giving you a modern containerization experience without Docker.

We will cover everything from installing dependencies to configuring Minikube and troubleshooting potential issues. By the end, you’ll have Minikube running smoothly with Podman and CRI-O as the container runtime on your CentOS Stream 10 machine.


🔧 Prerequisites

Before we dive into the actual setup, ensure you have the following prerequisites installed on your CentOS Stream 10 system:

  • Podman: Container runtime to run containers without Docker.
  • Minikube: The tool that sets up and manages Kubernetes clusters locally.
  • Kubectl: The Kubernetes command-line tool (though Minikube provides a bundled version, it’s useful to have it installed).

💡If you’re running the server or workstation version of CentOS Stream 10, podman is installed automatically by default.

Install Podman

Install it with the following command:

				
					dnf install podman -y
				
			

To verify the installation, run:

				
					podman --version
				
			
				
					podman version 5.5.1
				
			

Download and Install Minikube

Next, install Minikube. The easiest method is using the official Minikube binary:

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

To verify the installation, run:

				
					minikube version
				
			
				
					minikube version: v1.36.0
commit: f8f52f5de11fc6ad8244afac475e1d0f96841df1-dirty
				
			

💡It’s common for the version of kubectl to differ from the version used by your Minikube cluster or Kubernetes release. To ensure compatibility and avoid unexpected behavior, use the following commands to run the version of kubectl bundled with Minikube:

				
					echo 'alias kubectl="minikube kubectl --"' >> ~/.bashrc && source ~/.bashrc
				
			

🔄 Step 1: Configure Minikube to Use Podman

By default, Minikube uses Docker as its container runtime. To configure Minikube to use Podman, we need to set it as the runtime and adjust a few configurations. Additionally, we will set CRI-O as the container runtime. First, set the container runtime to CRI-O using the following command:

				
					minikube config set container-runtime cri-o
				
			
				
					❗  These changes will take effect upon a minikube delete and then a minikube start
				
			

Next, set the container driver to Podman:

				
					minikube config set driver podman
				
			
				
					❗  These changes will take effect upon a minikube delete and then a minikube start
				
			

You can verify these settings by running:

				
					minikube config view
				
			
				
					- container-runtime: cri-o
- driver: podman
				
			

🔄 Step 2: Start Minikube with Podman as the Container Runtime

First, set minikube to run rootless:

				
					minikube config set rootless true
				
			

Start the cluster with:

				
					minikube start --driver=podman
				
			
				
					😄  minikube v1.36.0 on Centos 10 (kvm/amd64)
    ▪ MINIKUBE_ROOTLESS=true
✨  Using the podman driver based on user configuration
📌  Using rootless Podman driver
👍  Starting "minikube" primary control-plane node in "minikube" cluster
🚜  Pulling base image v0.0.47 ...
💾  Downloading Kubernetes v1.33.1 preload ...
    > preloaded-images-k8s-v18-v1...:  394.07 MiB / 394.07 MiB  100.00% 81.05 M
    > gcr.io/k8s-minikube/kicbase...:  502.26 MiB / 502.26 MiB  100.00% 24.73 M
E0801 19:41:22.948506    7735 cache.go:225] Error downloading kic artifacts:  not yet implemented, see issue #8426
🔥  Creating podman container (CPUs=2, Memory=2200MB) ...
🎁  Preparing Kubernetes v1.33.1 on CRI-O 1.24.6 ...
    ▪ Generating certificates and keys ...
    ▪ Booting up control plane ...
    ▪ Configuring RBAC rules ...
🔗  Configuring CNI (Container Networking Interface) ...
🔎  Verifying Kubernetes components...
    ▪ Using image gcr.io/k8s-minikube/storage-provisioner:v5
🌟  Enabled addons: default-storageclass, storage-provisioner
💡  kubectl not found. If you need it, try: 'minikube kubectl -- get pods -A'
🏄  Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default

				
			

💡E0801 19:41:22.948506 7735 cache.go:225] Error downloading kic artifacts: not yet implemented, see issue #8426:

This message indicates that Minikube attempted to download KIC (Kubernetes in Container) artifacts, which are base images used to run Kubernetes nodes inside containers (e.g., with Podman or Docker). However, the feature to download these artifacts in your specific setup—likely with rootless Podman—has not yet been implemented in Minikube. The reference to issue #8426 points to a known limitation in the project’s GitHub repository, suggesting that this functionality is pending development or enhancement.


🔄 Step 3: Troubleshooting Common Errors

Issue 1: Podman Volume Exists

Sometimes, you may encounter the following error when starting Minikube:

				
					Error: volume with name minikube already exists: volume already exists
				
			

To resolve this, you need to remove the existing volume manually:

				
					minikube start --container-runtime=podman
				
			

First, list the podman volume(s):

				
					podman volume ls
				
			
				
					DRIVER      VOLUME NAME
local       minikube

				
			

Then, remove the minikube volume:

				
					podman volume rm minikube
				
			

After removing the volume, attempt to start Minikube again.

Issue 2: Failed to Start Minikube Container

If Minikube fails to start the container due to issues like permissions or conflicts with system services, running the following commands may resolve the issue. Delete the current Minikube profile:

				
					minikube delete -p minikube
				
			

Remove any existing Minikube configurations or volumes:

				
					minikube delete --all
				
			

After clearing any existing configurations, set up the container runtime and driver again:

				
					minikube config set container-runtime cri-o
				
			
				
					minikube config set driver podman
				
			

Finally, restart Minikube:

				
					minikube start --driver=podman
				
			

🔄 Step 4: Verifying the Setup

Once Minikube has started successfully, you can verify that everything is running as expected by checking the status:

				
					minikube status
				
			

This will display the status of your Kubernetes cluster, including the control plane and the nodes. If all components are up and running, the output should look something like this:

				
					minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured
				
			

You can also check if your Kubernetes cluster is accessible using kubectl:

				
					kubectl get pods -A
				
			

This command will show you all the running pods across namespaces in your cluster. You should see essential system pods like storage-provisioner.

				
					NAMESPACE     NAME                               READY   STATUS             RESTARTS         AGE
kube-system   coredns-674b8bbfcf-ks7rw           1/1     Running            0                55m
kube-system   etcd-minikube                      1/1     Running            0                55m
kube-system   kindnet-8p6g5                      1/1     Running            0                55m
kube-system   kube-apiserver-minikube            1/1     Running            0                55m
kube-system   kube-controller-manager-minikube   1/1     Running            1 (55m ago)      55m
kube-system   kube-proxy-d4wqj                   1/1     Running            0                55m
kube-system   kube-scheduler-minikube            1/1     Running            0                55m
kube-system   storage-provisioner                1/1     Running            1 (54m ago)      55m

				
			

Check Container Runtime

To confirm that CRI-O is being used as the container runtime, run:

				
					kubectl get pods -A
				
			

Under the CONTAINER-RUNTIME column, you should see cri-o listed.

				
					AME       STATUS   ROLES           AGE   VERSION   INTERNAL-IP    EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION           CONTAINER-RUNTIME
minikube   Ready   control-plane   59m   v1.33.1   192.168.49.2   <none>        Ubuntu 22.04.5 LTS   6.12.0-113.el10.x86_64   cri-o://1.24.6

				
			

🔄 Step 5: Additional Configurations and Optimizations

After getting Minikube up and running, there are several things you can do to enhance your setup:

Enable Minikube Addons

Minikube comes with a set of handy addons. You can enable them with the following commands:

Enable the ingress addon to manage external HTTP/S traffic:

				
					minikube addons enable ingress
				
			

Enable metrics-server to monitor your cluster:

				
					minikube addons enable metrics-server
				
			

Increase Resources

If you want to increase the resources allocated to Minikube, you can change the number of CPUs and memory:

				
					minikube config set cpus 4
				
			
				
					minikube config set memory 4096
				
			
				
					minikube start --driver=podman
				
			

This increases the available CPU and memory to improve performance.


🏁 Conclusion

Congratulations! 🎉 You have successfully set up Minikube on CentOS Stream 10 with Podman as the container runtime and CRI-O as the Kubernetes runtime. You’ve learned how to configure Minikube, handle common errors, and verify your setup to ensure everything is working correctly.

This setup provides a modern, efficient, and lightweight development environment that aligns with the latest container technologies. Whether you’re developing, testing, or learning Kubernetes, Minikube with Podman is an excellent choice.

Did you find this article helpful? Your feedback is invaluable to us! Feel free to share this post with those who may benefit, and let us know your thoughts in the comments section below.


👉 Related Posts

Leave a Reply

Your email address will not be published. Required fields are marked *