logo
banner
Photo by Esther Jiao on Unsplash

Mastering Minikube: A Deep Dive Beyond the Basics

Minikube is an awesome tool for running Kubernetes locally, but let's be real—most people just minikube start and call it a day. But there's so much more you can do! In this post, I'm diving into some intermediate-level features and optimizations to help you squeeze every last drop of power out of Minikube.


Advanced Minikube Features You Should Know

1. Choosing the Right Driver for Performance

Minikube supports multiple drivers, and picking the right one can make a huge difference in speed and resource usage.

To set your preferred driver permanently:

minikube config set driver docker

Or just specify it when starting Minikube:

minikube start --driver=docker

2. Running Multiple Clusters Like a Pro

Sometimes, one Minikube instance isn't enough. Need different environments for testing? No problem.

minikube start -p dev-cluster minikube start -p staging-cluster

Switch between them easily:

kubectl config use-context minikube-dev-cluster

Shut down or delete specific clusters:

minikube stop -p dev-cluster minikube delete -p staging-cluster

3. Give It More Juice: Resource Allocation

Minikube starts with minimal resources, which is fine for small tests but not great for serious work. Bump it up with:

minikube start --memory=4g --cpus=2

Check if it's struggling:

minikube status

4. Supercharging Minikube with Addons

Minikube comes with built-in addons that can make your life easier.

To enable an addon:

minikube addons enable metrics-server

List all available addons:

minikube addons list

5. Keeping Data Persistent (So It Doesn't Vanish on Restart)

By default, Minikube wipes everything when restarted. If you need persistent storage:

apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi

Apply it:

kubectl apply -f pvc.yaml

Check if it's working:

kubectl get pvc

6. Making LoadBalancers Work Locally

Minikube doesn’t support external LoadBalancers like a cloud provider would, but there's a hack for that:

kubectl expose deployment my-app --type=LoadBalancer --port=80 minikube tunnel

Now, it assigns an external IP, making it act like a real LoadBalancer!

7. Using Profiles for Different Configurations

Profiles let you create different Minikube setups for different projects.

minikube start -p dev --cpus=2 --memory=4g minikube start -p staging --cpus=4 --memory=8g

Switch between them with:

minikube profile list minikube profile use dev

8. Building Docker Images Inside Minikube

Minikube doesn't use your local Docker daemon by default. If you don’t want to push images to Docker Hub just to test them, use this trick:

eval $(minikube docker-env) docker build -t my-app:v1 . kubectl apply -f deployment.yaml

Now your image is available inside Minikube without any extra hassle!


Wrapping Up

Minikube is more than just a local Kubernetes playground—it can be a powerful testing and development tool if used right. By leveraging multi-cluster management, persistent storage, optimized resource allocation, and built-in addons, you can make Minikube feel almost like a production cluster (well, almost).