Minikube Skill
Overview
Minikube runs a single-node Kubernetes cluster locally for development and testing. It supports multiple container runtimes (Docker, containerd, CRI-O) and provides easy addon management.
Installation
macOS
bash
1# Homebrew
2brew install minikube
3
4# Or direct download
5curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-darwin-arm64
6sudo install minikube-darwin-arm64 /usr/local/bin/minikube
Linux
bash
1curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
2sudo install minikube-linux-amd64 /usr/local/bin/minikube
Windows (WSL2)
bash
1curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
2sudo install minikube-linux-amd64 /usr/local/bin/minikube
Essential Commands
Cluster Management
bash
1# Start cluster (uses Docker driver by default)
2minikube start
3
4# Start with specific resources
5minikube start --memory=8192 --cpus=4
6
7# Start with specific Kubernetes version
8minikube start --kubernetes-version=v1.28.0
9
10# Start with specific driver
11minikube start --driver=docker
12
13# Check cluster status
14minikube status
15
16# Stop cluster (preserves state)
17minikube stop
18
19# Delete cluster completely
20minikube delete
21
22# Delete all clusters and profiles
23minikube delete --all
Multiple Profiles
bash
1# Create named cluster
2minikube start -p my-cluster
3
4# Switch between clusters
5minikube profile my-cluster
6
7# List all profiles
8minikube profile list
9
10# Delete specific profile
11minikube delete -p my-cluster
Accessing the Cluster
bash
1# Open Kubernetes dashboard
2minikube dashboard
3
4# Get cluster IP
5minikube ip
6
7# SSH into the node
8minikube ssh
9
10# Access service via URL
11minikube service <service-name> --url
12
13# Open service in browser
14minikube service <service-name>
Addons
Minikube addons extend cluster functionality:
List and Enable Addons
bash
1# List all available addons
2minikube addons list
3
4# Enable addon
5minikube addons enable <addon-name>
6
7# Disable addon
8minikube addons disable <addon-name>
Essential Addons for TaskFlow
bash
1# Ingress controller (REQUIRED for external access)
2minikube addons enable ingress
3
4# Ingress DNS (optional, for local DNS)
5minikube addons enable ingress-dns
6
7# Metrics server (for kubectl top)
8minikube addons enable metrics-server
9
10# Dashboard (web UI)
11minikube addons enable dashboard
12
13# Storage provisioner (for PVCs)
14minikube addons enable storage-provisioner
15
16# Registry (local container registry)
17minikube addons enable registry
Full Setup for TaskFlow
bash
1# Start with sufficient resources
2minikube start --memory=8192 --cpus=4
3
4# Enable essential addons
5minikube addons enable ingress
6minikube addons enable metrics-server
7minikube addons enable storage-provisioner
8minikube addons enable dashboard
Networking
Accessing Services
Three ways to access services in Minikube:
1. NodePort Service
bash
1# Get service URL
2minikube service my-service --url
3# Returns: http://192.168.49.2:30080
2. Minikube Tunnel (LoadBalancer)
bash
1# Run in separate terminal (requires sudo)
2minikube tunnel
3
4# Now LoadBalancer services get external IPs
5kubectl get svc
6# EXTERNAL-IP will show actual IP instead of <pending>
3. Port Forwarding
bash
1kubectl port-forward svc/my-service 8080:80
2# Access at http://localhost:8080
Ingress Setup
bash
1# Enable ingress addon
2minikube addons enable ingress
3
4# Get minikube IP
5minikube ip
6# Returns: 192.168.49.2
7
8# Add to /etc/hosts
9echo "$(minikube ip) taskflow.local" | sudo tee -a /etc/hosts
10
11# Now access via: http://taskflow.local
Using Local Docker Images
Load Image into Minikube
bash
1# Load from local Docker
2minikube image load my-image:tag
3
4# List images in Minikube
5minikube image list
Build Directly in Minikube
bash
1# Point Docker CLI to Minikube's Docker daemon
2eval $(minikube docker-env)
3
4# Now docker build goes directly into Minikube
5docker build -t my-app:local .
6
7# Use imagePullPolicy: Never in K8s manifests
Reset Docker Environment
bash
1# Return to local Docker daemon
2eval $(minikube docker-env -u)
Configuration
Set Default Memory/CPU
bash
1minikube config set memory 8192
2minikube config set cpus 4
3minikube config set driver docker
View Configuration
bash
1minikube config view
Debugging
Logs
bash
1# Minikube logs
2minikube logs
3
4# Follow logs
5minikube logs -f
6
7# Specific component logs
8minikube logs --file=kubelet
Common Issues
1. Insufficient Resources
bash
1# Stop and restart with more resources
2minikube stop
3minikube start --memory=8192 --cpus=4
2. Driver Issues
bash
1# Try different driver
2minikube delete
3minikube start --driver=docker
3. Ingress Not Working
bash
1# Verify ingress addon is running
2kubectl get pods -n ingress-nginx
3
4# Check ingress controller logs
5kubectl logs -n ingress-nginx -l app.kubernetes.io/component=controller
4. Services Not Accessible
bash
1# Check if tunnel is needed
2minikube tunnel # Run in separate terminal
3
4# Or use NodePort
5minikube service <service-name>
TaskFlow Deployment Workflow
bash
1# 1. Start Minikube
2minikube start --memory=8192 --cpus=4
3
4# 2. Enable addons
5minikube addons enable ingress
6minikube addons enable metrics-server
7
8# 3. Point to Minikube Docker
9eval $(minikube docker-env)
10
11# 4. Build images locally
12docker build -t taskflow/api:local ./packages/api
13docker build -t taskflow/web:local ./web-dashboard
14docker build -t taskflow/sso:local ./sso-platform
15docker build -t taskflow/mcp-server:local ./packages/mcp-server
16
17# 5. Deploy with Helm
18helm install taskflow ./helm/taskflow \
19 --set api.image.tag=local \
20 --set api.image.pullPolicy=Never \
21 --set web.image.tag=local \
22 --set web.image.pullPolicy=Never
23
24# 6. Start tunnel for LoadBalancer
25minikube tunnel
26
27# 7. Access application
28minikube service taskflow-web
Quick Reference
| Command | Purpose |
|---|
minikube start | Start cluster |
minikube stop | Stop cluster |
minikube delete | Delete cluster |
minikube status | Check status |
minikube dashboard | Open web UI |
minikube addons list | List addons |
minikube service <svc> | Access service |
minikube tunnel | Enable LoadBalancer |
minikube ip | Get cluster IP |
minikube image load <img> | Load Docker image |
eval $(minikube docker-env) | Use Minikube Docker |
Resources
Refer to references/addons-guide.md for detailed addon configurations.