AlmaLinuxRHEL Based

How To Install Minikube on AlmaLinux 10

Install Minikube on AlmaLinux 10

Minikube represents a powerful solution for developers seeking to run Kubernetes clusters locally. This lightweight Kubernetes implementation enables developers to test applications, experiment with container orchestration, and learn Kubernetes concepts without requiring expensive cloud infrastructure or complex multi-node setups.

What makes Minikube essential for modern development? It provides a complete Kubernetes experience on a single machine, supporting most Kubernetes features including DNS, NodePorts, ConfigMaps, and Secrets. Unlike full production Kubernetes deployments that demand multiple servers and extensive networking configuration, Minikube simplifies the development process by creating an isolated environment perfect for testing and learning.

AlmaLinux 10 serves as an excellent foundation for Kubernetes development environments. As a community-driven, enterprise-grade Linux distribution that maintains full compatibility with Red Hat Enterprise Linux, AlmaLinux offers the stability and security features necessary for container orchestration platforms. The distribution’s robust package management system, SELinux integration, and long-term support make it particularly suitable for developers who require reliable development environments.

This comprehensive guide covers everything needed to successfully install and configure Minikube on AlmaLinux 10. You’ll learn multiple installation methods, from binary downloads to package management approaches. The tutorial includes detailed configuration steps, verification procedures, and troubleshooting solutions for common installation challenges.

By following this guide, you’ll establish a fully functional local Kubernetes cluster capable of supporting your development workflow. Whether you’re building microservices, testing container deployments, or learning Kubernetes fundamentals, this installation will provide the foundation for your containerized application development journey.

Prerequisites and System Requirements

Hardware Requirements

Before beginning the Minikube installation process, ensure your AlmaLinux 10 system meets the minimum hardware specifications. Your system must have at least 2 CPU cores to support Kubernetes operations effectively. Single-core systems will struggle with the computational demands of container orchestration and may experience performance bottlenecks.

Memory requirements are equally critical for smooth operation. Allocate a minimum of 2GB RAM specifically for Minikube, though 4GB or more provides optimal performance for development workloads. This memory allocation supports the Kubernetes control plane components, worker nodes, and your containerized applications simultaneously.

Storage considerations include 20GB of available disk space for the Minikube installation, container images, and persistent volumes. SSD storage significantly improves performance compared to traditional hard drives, particularly during container image pulls and cluster startup operations.

A stable internet connection remains essential throughout the installation process for downloading container images, Kubernetes components, and system updates.

Software Prerequisites

AlmaLinux 10 should be freshly installed and fully updated before proceeding with Minikube installation. Root access or sudo privileges are mandatory for installing system packages, configuring services, and modifying system settings.

The DNF package manager must be functional and configured with proper repository access. Most AlmaLinux installations include DNF by default, but verify its availability and update the package cache before beginning.

SSH access proves valuable for remote installations, particularly in virtual machine environments or headless server configurations. Configure SSH keys and test connectivity if planning to manage the installation remotely.

Virtualization Support Verification

Hardware virtualization support is absolutely critical for Minikube operation. Most modern processors include virtualization extensions (Intel VT-x or AMD-V), but these features may be disabled in BIOS/UEFI settings.

Check virtualization support using the following command:

egrep -c '(vmx|svm)' /proc/cpuinfo

A result greater than zero indicates virtualization support. If the command returns zero, access your system’s BIOS/UEFI settings and enable virtualization features before proceeding.

Verify that the kvm modules are available:

lsmod | grep kvm

This verification ensures your system can support the virtualization technologies required for Minikube’s container runtime operations.

System Preparation and Dependencies

System Update and Package Management

Begin by updating your AlmaLinux 10 system to ensure compatibility with the latest Minikube releases. System updates provide critical security patches and resolve potential compatibility issues with container runtime software.

Execute the following commands to update your system:

sudo dnf update -y
sudo dnf clean all

The update process may require several minutes depending on your internet connection and the number of available updates. Restart your system after major kernel updates to ensure all changes take effect properly.

Configure DNF for optimal performance by enabling the fastest mirror selection:

sudo dnf install dnf-plugins-core -y
sudo dnf config-manager --set-enabled PowerTools

SELinux configuration may require adjustment for container operations. Check the current SELinux status:

getenforce

If SELinux is set to “Enforcing,” consider setting it to “Permissive” mode for development environments to avoid potential policy conflicts with container runtime operations.

Installing Essential Dependencies

Container runtime installation forms the foundation of your Minikube environment. Docker serves as the most common container runtime, providing reliable container management capabilities.

Install Docker using the official Docker repository:

sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo dnf install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y

Start and enable the Docker service:

sudo systemctl start docker
sudo systemctl enable docker

Add your user to the docker group to avoid requiring sudo for Docker commands:

sudo usermod -aG docker $USER
newgrp docker

Install kubectl, the Kubernetes command-line tool essential for cluster management:

curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl
sudo mv kubectl /usr/local/bin/

Verify kubectl installation:

kubectl version --client

Virtualization Environment Setup

KVM (Kernel-based Virtual Machine) provides superior performance compared to other virtualization solutions for Minikube deployments. Install the complete KVM virtualization stack:

sudo dnf install qemu-kvm libvirt virt-install virt-manager virt-viewer -y

Install additional virtualization management tools:

sudo dnf install libvirt-daemon-system libvirt-clients bridge-utils -y

Start and enable libvirt services:

sudo systemctl start libvirtd
sudo systemctl enable libvirtd

Configure user permissions for virtualization access:

sudo usermod -aG libvirt $USER
sudo usermod -aG kvm $USER

Verify virtualization service status:

sudo systemctl status libvirtd

Test KVM functionality:

sudo virt-host-validate

This command validates your virtualization environment and identifies any configuration issues that might affect Minikube performance.

Minikube Installation Methods

Binary Download Method

The binary download method offers maximum flexibility and ensures you receive the latest Minikube version directly from the official source. This approach bypasses package manager dependencies and provides immediate access to new features.

Download the latest Minikube binary:

curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64

Verify the download integrity by checking the file size and permissions:

ls -la minikube-linux-amd64

Make the binary executable and move it to the system PATH:

chmod +x minikube-linux-amd64
sudo mv minikube-linux-amd64 /usr/local/bin/minikube

Verify the installation by checking the Minikube version:

minikube version

The binary installation method provides several advantages: immediate access to the latest releases, independence from package manager updates, and simplified version management for development environments requiring specific Minikube versions.

Create a symbolic link for easier access:

sudo ln -sf /usr/local/bin/minikube /usr/bin/minikube

RPM Package Installation

RPM package installation integrates Minikube with your system’s package management infrastructure, providing automatic dependency resolution and update management. This method suits production-like environments where package tracking and management are priorities.

Add the Kubernetes repository to your system:

cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.32/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.32/rpm/repodata/repomd.xml.key
exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni
EOF

Install Minikube using DNF:

sudo dnf install minikube -y

The package manager automatically resolves dependencies and integrates Minikube with system services. This installation method ensures compatibility with your AlmaLinux environment and provides automatic updates through the standard package update process.

Verify the installation:

which minikube
minikube version

Alternative Installation Methods

Snap packages provide containerized application distribution for environments supporting snap technology. Install snapd on AlmaLinux:

sudo dnf install snapd -y
sudo systemctl enable --now snapd.socket
sudo ln -s /var/lib/snapd/snap /snap

Install Minikube via snap:

sudo snap install minikube

For advanced users requiring specific versions or custom configurations, building from source provides ultimate control over the installation process. Clone the Minikube repository:

git clone https://github.com/kubernetes/minikube.git
cd minikube
make

This method requires Go development tools and extended compilation time but offers complete customization capabilities for specialized deployment requirements.

Container Runtime Configuration

Docker Setup and Configuration

Docker configuration significantly impacts Minikube performance and functionality. Proper Docker setup ensures smooth container operations and optimal resource utilization within your Kubernetes cluster.

Configure Docker daemon settings for optimal performance:

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<EOF
{
  "storage-driver": "overlay2",
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  },
  "registry-mirrors": ["https://mirror.gcr.io"]
}
EOF

Restart Docker to apply configuration changes:

sudo systemctl restart docker

Test Docker functionality with a simple container:

docker run hello-world

Registry mirror configuration accelerates image downloads by using geographically closer registry endpoints. Configure additional mirrors based on your location for optimal performance.

Verify Docker group membership:

groups $USER

The output should include “docker” among the listed groups. If not, log out and log back in to refresh group memberships.

KVM/Virtualization Driver Setup

KVM2 driver provides superior performance compared to VirtualBox or other virtualization solutions for Linux environments. Install the KVM2 driver components:

curl -LO https://storage.googleapis.com/minikube/releases/latest/docker-machine-driver-kvm2
chmod +x docker-machine-driver-kvm2
sudo mv docker-machine-driver-kvm2 /usr/local/bin/

Configure libvirt network settings for proper VM connectivity:

sudo virsh net-start default
sudo virsh net-autostart default

Verify the default libvirt network status:

sudo virsh net-list --all

The default network should be active and set to autostart. Network configuration ensures proper communication between the Minikube VM and your host system, enabling service exposure and development workflow integration.

Create a dedicated libvirt network for Minikube if the default network conflicts with existing configurations:

sudo virsh net-define /dev/stdin <<EOF
<network>
  <name>minikube-net</name>
  <forward mode='nat'/>
  <bridge name='virbr1' stp='on' delay='0'/>
  <ip address='192.168.39.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.39.2' end='192.168.39.254'/>
    </dhcp>
  </ip>
</network>
EOF
sudo virsh net-start minikube-net
sudo virsh net-autostart minikube-net

Initial Minikube Configuration

First-Time Startup Process

The initial Minikube startup configures the entire Kubernetes cluster infrastructure. This process downloads necessary container images, configures networking, and initializes cluster components.

Start Minikube with specific configuration parameters:

minikube start --driver=docker --cpus=2 --memory=4096 --disk-size=20gb

For KVM2 driver configuration:

minikube start --driver=kvm2 --cpus=2 --memory=4096 --disk-size=20gb

Driver selection significantly impacts performance and compatibility. Docker driver offers simplicity and broad compatibility, while KVM2 provides better isolation and performance for development workloads.

Monitor the startup process through verbose logging:

minikube start --driver=docker --v=7

The startup process typically requires 2-5 minutes depending on your internet connection and system performance. First-time startups take longer due to container image downloads and cluster initialization procedures.

Configure default driver to avoid specifying it with each command:

minikube config set driver docker

kubectl Configuration and Integration

kubectl configuration enables seamless interaction with your Minikube cluster through the standard Kubernetes command-line interface. Minikube automatically configures kubectl during the startup process.

Verify kubectl cluster connectivity:

kubectl cluster-info
kubectl get nodes

The cluster-info command displays API server and other cluster service endpoints. Node status should show “Ready” indicating successful cluster initialization.

Configure kubectl context for easy cluster switching:

kubectl config get-contexts
kubectl config current-context

Minikube automatically creates a context named “minikube” and sets it as the current context. Context configuration enables management of multiple Kubernetes clusters from a single kubectl installation.

Test basic cluster functionality:

kubectl get namespaces
kubectl get pods --all-namespaces

Create a test namespace to verify cluster operations:

kubectl create namespace test-env
kubectl get namespaces

Namespace creation confirms cluster functionality and validates your administrative access to the Kubernetes API server.

Verification and Testing

Cluster Status Verification

Comprehensive cluster verification ensures proper installation and identifies potential configuration issues before deploying applications. Multiple verification steps validate different cluster components and functionalities.

Check overall Minikube status:

minikube status
minikube profile list

Verify node readiness and system pod status:

kubectl get nodes -o wide
kubectl get pods -n kube-system

All kube-system pods should be in “Running” or “Completed” status. Pending or Error states indicate configuration problems requiring troubleshooting.

Examine cluster events for error messages:

kubectl get events --sort-by=.metadata.creationTimestamp

Test API server accessibility:

kubectl version
kubectl api-resources

Verify cluster networking configuration:

kubectl get services --all-namespaces
minikube ip

Deploying Test Applications

Application deployment testing validates end-to-end cluster functionality including pod scheduling, service creation, and network connectivity. Deploy a simple test application to verify cluster operations.

Create a test deployment:

kubectl create deployment hello-minikube --image=kicbase/echo-server:1.0
kubectl expose deployment hello-minikube --type=NodePort --port=8080

Verify deployment status:

kubectl get deployments
kubectl get pods
kubectl get services

Pod status should progress from “Pending” to “Running” within a few minutes. Extended pending states may indicate resource constraints or image pull issues.

Access the test application:

minikube service hello-minikube --url

Test connectivity using curl:

curl $(minikube service hello-minikube --url)

Successful connectivity confirms complete cluster functionality including pod deployment, service exposure, and network routing between cluster components.

Clean up test resources:

kubectl delete deployment hello-minikube
kubectl delete service hello-minikube

Kubernetes Dashboard Setup

Dashboard Installation and Access

The Kubernetes Dashboard provides a web-based management interface for cluster administration, resource monitoring, and application deployment. Enable the dashboard addon in Minikube:

minikube addons enable dashboard
minikube addons enable metrics-server

Verify addon installation:

minikube addons list
kubectl get pods -n kubernetes-dashboard

Dashboard pods should reach “Running” status before proceeding with access configuration. Monitor pod startup progress if initialization takes extended time.

Access the dashboard through Minikube’s built-in proxy:

minikube dashboard

This command automatically opens the dashboard in your default web browser. For headless installations, use the dashboard URL flag:

minikube dashboard --url

Dashboard Security and Best Practices

Production dashboard deployments require proper authentication and access control configuration. Create a service account for dashboard access:

kubectl create serviceaccount dashboard-admin-sa
kubectl create clusterrolebinding dashboard-admin-sa --clusterrole=cluster-admin --serviceaccount=default:dashboard-admin-sa

Generate an access token for authentication:

kubectl create token dashboard-admin-sa

Store the token securely and use it for dashboard authentication in production environments. Development environments may use the skip option, but this approach compromises security.

Configure network access restrictions:

kubectl patch service kubernetes-dashboard -n kubernetes-dashboard --type='json' -p='[{"op":"replace","path":"/spec/type","value":"ClusterIP"}]'

ClusterIP service type restricts external access and requires port forwarding or proxy access for dashboard connectivity. This configuration enhances security by preventing direct external access to the dashboard interface.

Common Issues and Troubleshooting

Installation-Related Problems

Virtualization errors represent the most common installation obstacles for Minikube deployments. If you encounter “virtualization not enabled” errors, verify BIOS/UEFI settings and CPU virtualization support.

Driver compatibility issues may arise with specific hardware configurations. Switch between different drivers to identify working combinations:

minikube delete
minikube start --driver=kvm2

For persistent driver issues, try the none driver (discouraged for development):

minikube start --driver=none

Network connectivity problems often manifest during image downloads. Configure Docker registry mirrors or check firewall settings:

sudo firewall-cmd --add-port=2376/tcp --permanent
sudo firewall-cmd --reload

Permission issues frequently occur with Docker socket access. Verify group membership and restart your session:

groups $USER
sudo systemctl restart docker

Runtime and Cluster Issues

Cluster startup failures may result from resource constraints or configuration conflicts. Increase resource allocation if startup consistently fails:

minikube delete
minikube start --cpus=4 --memory=8192

Pod creation problems often indicate container runtime issues. Check Docker service status and container capabilities:

sudo systemctl status docker
docker info

Service discovery failures may stem from DNS configuration problems. Verify CoreDNS pod status in the kube-system namespace:

kubectl get pods -n kube-system | grep coredns
kubectl describe pod -n kube-system coredns-xxxx

Persistent volume issues require storage class verification and disk space availability:

kubectl get storageclass
df -h /var/lib/minikube

Network policy conflicts rarely occur in default configurations but may affect custom networking setups. Review network policies and service configurations for connectivity issues.

Performance Optimization and Best Practices

Resource Management

Optimal resource allocation balances performance with system stability. Monitor resource usage during typical development workloads to determine appropriate settings:

minikube addons enable metrics-server
kubectl top nodes
kubectl top pods --all-namespaces

Configure resource limits for development workloads:

minikube config set cpus 4
minikube config set memory 8192
minikube config set disk-size 40gb

SSD storage significantly improves performance compared to traditional hard drives, particularly for container image operations and persistent volume access.

Enable resource monitoring addons:

minikube addons enable heapster
minikube addons enable metrics-server

Disk space management prevents cluster failures due to storage exhaustion:

minikube ssh 'df -h'
docker system prune -a

Security Considerations

Implement proper access controls even in development environments to establish security best practices. Configure RBAC (Role-Based Access Control):

kubectl create role developer --verb=get,list,create,delete --resource=pods,services,deployments
kubectl create rolebinding developer-binding --role=developer --user=dev-user

Secure cluster communications through proper certificate management. Minikube generates self-signed certificates by default, suitable for development but requiring replacement in production environments.

Manage secrets securely using Kubernetes secret objects:

kubectl create secret generic app-secret --from-literal=password=mysecretpassword

Regular security updates maintain cluster safety. Update Minikube and container images regularly:

minikube delete
minikube start
kubectl apply -f your-manifests.yaml

Configure network policies for application isolation:

kubectl create -f network-policy.yaml
kubectl get networkpolicies

Advanced Configuration and Management

Multi-Node Setup Considerations

While Minikube primarily supports single-node clusters, multi-node configurations are possible for testing distributed Kubernetes features. Enable multi-node clusters:

minikube start --nodes 3
kubectl get nodes

Multi-node clusters consume significantly more resources and require additional configuration for proper operation. Network configuration becomes more complex with multiple nodes requiring consistent networking policies.

Configure load balancing for multi-node setups:

minikube addons enable ingress
kubectl get pods -n ingress-nginx

Service mesh integration provides advanced networking capabilities for microservices testing:

minikube addons enable istio
kubectl get pods -n istio-system

Persistent storage configuration requires careful planning for multi-node environments:

kubectl get storageclass
kubectl describe storageclass standard

Integration with Development Workflows

CI/CD pipeline integration streamlines development processes by automating application deployment and testing within Minikube environments. Configure registry access for pipeline operations:

minikube addons enable registry
eval $(minikube docker-env)

Container registry configuration enables image sharing between development and pipeline environments:

minikube addons enable registry-aliases
kubectl get service -n kube-system registry

Automated testing frameworks benefit from Minikube’s consistent environment providing reproducible testing conditions across different development machines.

Development environment synchronization maintains consistency across team members:

minikube config view
minikube profile export development-profile

Volume mounting enables live code reloading during development:

minikube mount /local/path:/minikube/path

Congratulations! You have successfully installed Minikube. Thanks for using this tutorial for installing Minikube on your AlmaLinux OS 10 system. For additional help or useful information, we recommend you check the official Minikube website.

VPS Manage Service Offer
If you don’t have time to do all of this stuff, or if this is not your area of expertise, we offer a service to do “VPS Manage Service Offer”, starting from $10 (Paypal payment). Please contact us to get the best deal!

r00t

r00t is an experienced Linux enthusiast and technical writer with a passion for open-source software. With years of hands-on experience in various Linux distributions, r00t has developed a deep understanding of the Linux ecosystem and its powerful tools. He holds certifications in SCE and has contributed to several open-source projects. r00t is dedicated to sharing her knowledge and expertise through well-researched and informative articles, helping others navigate the world of Linux with confidence.
Back to top button