返回 Skill 列表
extension
分类: 开发与工程无需 API Key

minikube

使用Minikube管理本地Kubernetes集群,用于开发和测试。在设置本地K8s环境、启用插件、配置网络以及本地部署应用程序时应使用此技能。在云部署之前,使用此技能进行第四阶段的本地Kubernetes部署。

person作者: jakexiaohubgithub

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

# Homebrew
brew install minikube

# Or direct download
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-darwin-arm64
sudo install minikube-darwin-arm64 /usr/local/bin/minikube

Linux

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

Windows (WSL2)

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

Essential Commands

Cluster Management

# Start cluster (uses Docker driver by default)
minikube start

# Start with specific resources
minikube start --memory=8192 --cpus=4

# Start with specific Kubernetes version
minikube start --kubernetes-version=v1.28.0

# Start with specific driver
minikube start --driver=docker

# Check cluster status
minikube status

# Stop cluster (preserves state)
minikube stop

# Delete cluster completely
minikube delete

# Delete all clusters and profiles
minikube delete --all

Multiple Profiles

# Create named cluster
minikube start -p my-cluster

# Switch between clusters
minikube profile my-cluster

# List all profiles
minikube profile list

# Delete specific profile
minikube delete -p my-cluster

Accessing the Cluster

# Open Kubernetes dashboard
minikube dashboard

# Get cluster IP
minikube ip

# SSH into the node
minikube ssh

# Access service via URL
minikube service <service-name> --url

# Open service in browser
minikube service <service-name>

Addons

Minikube addons extend cluster functionality:

List and Enable Addons

# List all available addons
minikube addons list

# Enable addon
minikube addons enable <addon-name>

# Disable addon
minikube addons disable <addon-name>

Essential Addons for TaskFlow

# Ingress controller (REQUIRED for external access)
minikube addons enable ingress

# Ingress DNS (optional, for local DNS)
minikube addons enable ingress-dns

# Metrics server (for kubectl top)
minikube addons enable metrics-server

# Dashboard (web UI)
minikube addons enable dashboard

# Storage provisioner (for PVCs)
minikube addons enable storage-provisioner

# Registry (local container registry)
minikube addons enable registry

Full Setup for TaskFlow

# Start with sufficient resources
minikube start --memory=8192 --cpus=4

# Enable essential addons
minikube addons enable ingress
minikube addons enable metrics-server
minikube addons enable storage-provisioner
minikube addons enable dashboard

Networking

Accessing Services

Three ways to access services in Minikube:

1. NodePort Service

# Get service URL
minikube service my-service --url
# Returns: http://192.168.49.2:30080

2. Minikube Tunnel (LoadBalancer)

# Run in separate terminal (requires sudo)
minikube tunnel

# Now LoadBalancer services get external IPs
kubectl get svc
# EXTERNAL-IP will show actual IP instead of <pending>

3. Port Forwarding

kubectl port-forward svc/my-service 8080:80
# Access at http://localhost:8080

Ingress Setup

# Enable ingress addon
minikube addons enable ingress

# Get minikube IP
minikube ip
# Returns: 192.168.49.2

# Add to /etc/hosts
echo "$(minikube ip) taskflow.local" | sudo tee -a /etc/hosts

# Now access via: http://taskflow.local

Using Local Docker Images

Load Image into Minikube

# Load from local Docker
minikube image load my-image:tag

# List images in Minikube
minikube image list

Build Directly in Minikube

# Point Docker CLI to Minikube's Docker daemon
eval $(minikube docker-env)

# Now docker build goes directly into Minikube
docker build -t my-app:local .

# Use imagePullPolicy: Never in K8s manifests

Reset Docker Environment

# Return to local Docker daemon
eval $(minikube docker-env -u)

Configuration

Set Default Memory/CPU

minikube config set memory 8192
minikube config set cpus 4
minikube config set driver docker

View Configuration

minikube config view

Debugging

Logs

# Minikube logs
minikube logs

# Follow logs
minikube logs -f

# Specific component logs
minikube logs --file=kubelet

Common Issues

1. Insufficient Resources

# Stop and restart with more resources
minikube stop
minikube start --memory=8192 --cpus=4

2. Driver Issues

# Try different driver
minikube delete
minikube start --driver=docker

3. Ingress Not Working

# Verify ingress addon is running
kubectl get pods -n ingress-nginx

# Check ingress controller logs
kubectl logs -n ingress-nginx -l app.kubernetes.io/component=controller

4. Services Not Accessible

# Check if tunnel is needed
minikube tunnel  # Run in separate terminal

# Or use NodePort
minikube service <service-name>

TaskFlow Deployment Workflow

# 1. Start Minikube
minikube start --memory=8192 --cpus=4

# 2. Enable addons
minikube addons enable ingress
minikube addons enable metrics-server

# 3. Point to Minikube Docker
eval $(minikube docker-env)

# 4. Build images locally
docker build -t taskflow/api:local ./packages/api
docker build -t taskflow/web:local ./web-dashboard
docker build -t taskflow/sso:local ./sso-platform
docker build -t taskflow/mcp-server:local ./packages/mcp-server

# 5. Deploy with Helm
helm install taskflow ./helm/taskflow \
  --set api.image.tag=local \
  --set api.image.pullPolicy=Never \
  --set web.image.tag=local \
  --set web.image.pullPolicy=Never

# 6. Start tunnel for LoadBalancer
minikube tunnel

# 7. Access application
minikube 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.