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
bash1# 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
bash1curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 2sudo install minikube-linux-amd64 /usr/local/bin/minikube
Windows (WSL2)
bash1curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 2sudo install minikube-linux-amd64 /usr/local/bin/minikube
Essential Commands
Cluster Management
bash1# 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
bash1# 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
bash1# 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
bash1# 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
bash1# 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
bash1# 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
bash1# Get service URL 2minikube service my-service --url 3# Returns: http://192.168.49.2:30080
2. Minikube Tunnel (LoadBalancer)
bash1# 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
bash1kubectl port-forward svc/my-service 8080:80 2# Access at http://localhost:8080
Ingress Setup
bash1# 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
bash1# Load from local Docker 2minikube image load my-image:tag 3 4# List images in Minikube 5minikube image list
Build Directly in Minikube
bash1# 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
bash1# Return to local Docker daemon 2eval $(minikube docker-env -u)
Configuration
Set Default Memory/CPU
bash1minikube config set memory 8192 2minikube config set cpus 4 3minikube config set driver docker
View Configuration
bash1minikube config view
Debugging
Logs
bash1# 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
bash1# Stop and restart with more resources 2minikube stop 3minikube start --memory=8192 --cpus=4
2. Driver Issues
bash1# Try different driver 2minikube delete 3minikube start --driver=docker
3. Ingress Not Working
bash1# 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
bash1# Check if tunnel is needed 2minikube tunnel # Run in separate terminal 3 4# Or use NodePort 5minikube service <service-name>
TaskFlow Deployment Workflow
bash1# 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.