本地开发 Minikube/Kind
本地 K8s 集群加速微服务开发,下面介绍 Minikube 和 Kind 使用。
Kind (Kubernetes in Docker)
安装
Bash
# Linux
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.20.0/kind-linux-amd64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind
创建集群
Bash
# 创建默认集群
kind create cluster
# 创建自定义集群
kind create cluster --name dev-cluster --config kind-config.yaml
kind-config.yaml
YAML
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
extraPortMappings:
- containerPort: 80
hostPort: 80
protocol: TCP
- role: worker
- role: worker
Minikube
安装
Bash
# Linux
curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
chmod +x minikube
sudo mv minikube /usr/local/bin/
启动
Bash
# 启动 Minikube
minikube start --driver=docker
# 启动多节点
minikube start --nodes 3
# 查看状态
minikube status
本地开发流程
1. 启动集群
Bash
kind create cluster --name dev
2. 加载本地镜像
Bash
# Kind 加载镜像
kind load docker-image my-app:latest --name dev
# Minikube 加载
minikube image load my-app:latest
# 或使用本地 Registry
eval $(minikube docker-env)
docker build -t my-app:latest .
3. 部署应用
Bash
kubectl apply -f k8s/deployment.yaml
kubectl apply -f k8s/service.yaml
4. 访问服务
Bash
# 端口转发
kubectl port-forward svc/my-app 8080:80
# Minikube 服务
minikube service my-app --url
# Kind 服务(通过 LoadBalancer)
kubectl get svc
热更新
Skaffold
YAML
# skaffold.yaml
apiVersion: skaffold/v4beta1
kind: Config
metadata:
name: my-app
build:
artifacts:
- image: my-app
context: .
deploy:
kubectl:
manifests:
- k8s/*.yaml
Bash
# 启动热更新
skaffold dev
# 代码变化自动重建和部署
Tilt
Python
# Tiltfile
docker_build('my-app', '.')
k8s_yaml('k8s/deployment.yaml')
k8s_resource('my-app', port_forwards=8080)
Bash
# 启动 Tilt
tilt up
# Web UI: http://localhost:10350
调试
Bash
# 进入 Pod
kubectl exec -it deployment/my-app -- /bin/bash
# 查看日志
kubectl logs -f deployment/my-app
# 查看事件
kubectl get events --sort-by=.metadata.creationTimestamp
清理
Bash
# 删除集群
kind delete cluster --name dev
minikube delete
要点总结
- Kind 在 Docker 中运行 K8s 集群,轻量快速
- Minikube 支持多种驱动,功能更丰富
- Kind load / Minikube image load 加载本地镜像
- Skaffold/Tilt 实现代码热更新,加速开发
- 本地集群适合微服务开发和测试,不适合生产
📝 发现内容有误?点击此处直接编辑