什么是 kind?
kind(Kubernetes IN Docker)是一个通过 Docker 容器模拟 Kubernetes 节点,快速创建本地 Kubernetes 集群的工具。它轻量、快速,适合测试 Kubernetes 功能、开发调试或 CI/CD 环境。
前提条件
- 安装 Docker:所有节点以容器形式运行。
- 安装 kubectl:用于与 Kubernetes 集群交互。
- (可选)配置 Docker 非 root 权限:避免命令前加
sudo
。
一、安装 kind
# 下载最新版二进制文件(替换为最新版本号)
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.20.0/kind-linux-amd64
# 添加执行权限
chmod +x ./kind
# 移动到 PATH 目录(如 /usr/local/bin)
sudo mv ./kind /usr/local/bin/kind
# 验证安装
kind version
二、创建单节点集群
# 默认创建名为 "kind" 的单节点集群(控制平面 + 工作节点)
kind create cluster# 输出示例:
Creating cluster "kind" ...✓ Ensuring node image (kindest/node:v1.27.3) 🖼✓ Preparing nodes 📦 ✓ Writing configuration 📜 ✓ Starting control-plane 🕹️ ✓ Installing CNI 🔌 ✓ Installing StorageClass 💾
Set kubectl context to "kind-kind"
三、验证集群状态
# 查看集群节点(显示一个节点,角色包含 control-plane 和 worker)
kubectl get nodes# 输出示例:
NAME STATUS ROLES AGE VERSION
kind-control-plane Ready control-plane 10s v1.27.3# 查看所有 Pod(系统组件运行正常)
kubectl get pods -A
四、部署应用示例:Nginx
1. 创建 Deployment
kubectl create deployment nginx --image=nginx:alpine
2. 暴露 Service(ClusterIP)
kubectl expose deployment nginx --port=80
3. 端口转发访问
# 将本地 8080 端口映射到 Service 的 80 端口
kubectl port-forward service/nginx 8080:80# 浏览器访问 http://localhost:8080 或命令行测试
curl http://localhost:8080
五、创建多节点集群
1. 编写配置文件 multi-node.yaml
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane # 控制平面节点
- role: worker # 工作节点 1
- role: worker # 工作节点 2
2. 使用配置文件创建集群
kind create cluster --name multi-node-cluster --config multi-node.yaml# 查看节点(3 个节点)
kubectl get nodes
六、删除集群
# 删除默认集群
kind delete cluster# 删除指定名称的集群
kind delete cluster --name multi-node-cluster
七、常见使用场景
- Kubernetes 功能测试:快速验证新特性或 Bug 修复。
- 本地开发调试:在本地模拟真实集群部署应用。
- CI/CD 流水线:集成到自动化流程中测试部署步骤。
- 多节点实验:测试 Pod 调度、网络策略等跨节点行为。
附:kind vs minikube
特性 | kind | minikube |
---|---|---|
节点类型 | Docker 容器 | 虚拟机(默认)或容器 |
启动速度 | 快(容器无需启动完整 OS) | 较慢 |
多节点支持 | 原生支持 | 需插件 |
适用场景 | 集群级测试、多节点模拟 | 单节点开发、学习 |