下面 是一份从零开始、适配Ubuntu(腾讯云服务器)、带国内加速方案的Kind完整安装+集群搭建教程,每一步都有命令、解释和验证方法,跟着做就能跑起来。
📋 前置条件
你的服务器/电脑需要:
- 系统:Ubuntu 20.04 / 22.04(其他Debian系也通用)
- 内存:至少 2GB 空闲内存(单节点集群),多节点建议 4GB+
- 已开启Docker(下面会教你装)
- 网络能访问外网(会配置国内加速解决拉取慢的问题)
一、第一步:安装并配置 Docker(Kind 的底层依赖)
Kind 是基于 Docker 运行的,所以必须先装好 Docker。
1. 安装 Docker(国内加速版)
通过 宝塔 安装 docker 并且 配置 国内 加速源: https://docker.m.daocloud.io
if[-f/usr/bin/curl];thencurl-sSOhttps://download.bt.cn/install/install_panel.sh;elsewget-Oinstall_panel.sh https://download.bt.cn/install/install_panel.sh;fi;bashinstall_panel.sh ed8484bec2. 配置 Docker 免 sudo(必做!否则Kind会报错)
如果 全程使用 root 用户操作, 则可以 跳过 此步骤。
默认只有root用户能操作Docker,每次加sudo很麻烦,把当前用户加入docker组:
# 将当前用户加入docker组sudousermod-aGdocker$USER# 刷新用户组配置(新会话生效,不想退出的话执行下面这条)newgrpdocker二、第二步:安装 Kind 工具
推荐用二进制安装(无需Go环境,适合所有用户),也给你Go方式的备选。
方式1:二进制安装(推荐)
# 1. 下载对应系统的Kind二进制(amd64架构,服务器通用)curl-Lo./kind https://kind.sigs.k8s.io/dl/v0.24.0/kind-linux-amd64# 2. 赋予执行权限chmod+x ./kind# 3. 移动到系统目录,全局可用sudomv./kind /usr/local/bin/kind# 4. 验证安装成功(输出版本号就OK)kind version方式2:Go 安装(有Go环境的用户可选)
# 确保Go 1.21+已安装,执行下面的命令goinstallsigs.k8s.io/kind@v0.24.0三、第三步:安装 kubectl(管理K8s集群的工具)
我们需要用kubectl来操作Kind创建的集群,同样用国内源安装:
# 1. 下载kubectl(阿里云镜像,速度快)curl-LO"https://dl.k8s.io/release/$(curl-L-shttps://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"# 2. 赋予执行权限chmod+x ./kubectl# 3. 移动到系统目录sudomv./kubectl /usr/local/bin/kubectl# 4. 验证安装kubectl version--client四、第四步:用 Kind 创建你的第一个 K8s 集群
场景1:快速创建单节点集群(适合新手入门)
这是最简单的方式,1条命令就能创建1个单节点的K8s集群(Control Plane和Worker在同一个容器里):
# 创建名为my-first-cluster的单节点集群kind create cluster--namemy-first-cluster成功的输出:
root@VM-0-15-ubuntu:~# kind create cluster --name my-first-clusterCreating cluster"my-first-cluster"... ✓ Ensuringnodeimage(kindest/node:v1.31.0)🖼 ✓ Preparing nodes 📦 ✓ Writing configuration 📜 ✓ Starting control-plane 🕹️ ✓ Installing CNI 🔌 ✓ Installing StorageClass 💾 Set kubectl context to"kind-my-first-cluster"You can now use your cluster with: kubectl cluster-info--contextkind-my-first-cluster Have aniceday!👋测试:
# 查看集群节点状态kubectl get nodes# 成功结果(你会看到):NAME STATUS ROLES AGE VERSION my-first-cluster-control-plane Ready control-plane xxs v1.31.0 只要显示STATUS=Ready,就代表你的 K8s 集群完全可用!关键说明:
- 执行后会自动:拉取
kindest/node镜像→启动Docker容器作为节点→配置kubectl上下文 - 首次拉取镜像可能需要1-3分钟,耐心等待即可
- 成功后会输出类似:
Cluster "my-first-cluster" created successfully.
场景2:创建多节点集群(适合学习K8s调度)
如果想体验多节点K8s集群,需要用配置文件定义节点数量。
- 新建配置文件
kind-multi-node.yaml:
# kind-multi-node.yamlkind:ClusterapiVersion:kind.x-k8s.io/v1alpha4name:multi-node-clusternodes:-role:control-plane# 控制平面节点(1个)-role:worker# 工作节点1-role:worker# 工作节点2- 用配置文件创建集群:
kind create cluster--configkind-multi-node.yaml五、启动一个 Pod 测试
环境已经完美就绪! 创建 Redis Pod 进行测试。
说明: 新建的 redis pod 是在 my-first-cluster-control-plane 容器中 创建 和 运行的
# 创建名为 redis 的 Pod,使用官方 redis 镜像kubectl run redis--image=redis# 验证 Pod 是否创建成功# 查看所有 Pod(STATUS 变成 Running 就是成功)kubectl get pods#输出NAME READY STATUS RESTARTS AGE redis0/1 ImagePullBackOff05m11s先看懂状态:ImagePullBackOff
这是 K8s 最常见的报错,翻译:镜像拉取失败 → 重试多次还是失败 → 进入等待状态
根本原因:
你用的是腾讯云服务器,国内网络直接拉取 Docker 官方的redis镜像超时/失败
Kind 集群的节点容器里,下载不到镜像,所以 Pod 起不来。
Kind 的节点是独立的 Docker 容器,看不到你宿主机的镜像,必须手动把镜像「导入」集群!
### ① 先删掉这个失败的 Podkubectl delete pod redis### ② 宿主机拉取 **国内极速 Redis 镜像**dockerpull redis:latest### ③ 把本地镜像 **加载进 Kind 集群**(核心命令!)kind load docker-image redis:latest--namemy-first-cluster### ④ 重新创建 Redis Podkubectl run redis--image=redis:latest --image-pull-policy=IfNotPresent通俗讲原理(为什么要这么做)
- 你的服务器 → Docker(有 redis 镜像)
- Kind 集群 → 是一个独立的 Docker 容器(隔离的,看不见外面的镜像)
- 所以必须用
kind load命令,把镜像强行塞进集群里- 集群有了镜像,Pod 就能直接启动,不用再去国外下载了
重点说明:–image-pull-policy=IfNotPresent
镜像标签是 redis:latest(最新版),K8s 对 latest 标签有强制规则:
无论本地有没有镜像,都会强制去外网重新拉取!
所以哪怕你用 kind load 把镜像装进集群了,它还是会去国外网站下载 → 失败 → ImagePullBackOff
–image-pull-policy=IfNotPresent 意思是: 本地有镜像就用本地的,本地没有才去外网拉
测试:
kubectl get pods# 输出NAME READY STATUS RESTARTS AGE redis1/1 Running09s# 进入 Redis 命令行客户端kubectlexec-itredis -- redis-cli# 执行后你会进入 127.0.0.1:6379> 交互模式,输入:settesthello-k8s gettestexit六:验证集群是否正常运行
集群创建完成后,用下面的命令验证状态:
# 1. 查看当前kubectl指向的集群上下文kubectl config current-context# 2. 查看集群节点状态(STATUS显示Ready就是正常)kubectl get nodes# 3. 查看集群组件状态kubectl cluster-info# 4. 查看集群运行的所有Pod(kube-system命名空间下的组件都Running)kubectl get pods-nkube-system同时你可以用docker ps看到Kind创建的节点容器:
dockerps|grepkindest/node七、Kind 常用命令&日常操作
1. 集群管理
# 查看所有Kind集群kind get clusters# 切换kubectl到指定集群(如果有多个集群)kubectl config use-context kind-<集群名># 删除指定集群kind delete cluster--name<集群名># 删除所有Kind集群(一键清理)kind delete clusters--all2. 本地镜像加载(必学!部署应用必备)
你本地构建的Docker镜像,Kind集群默认看不到,需要手动加载进去:
# 假设你本地有个叫my-app:v1的镜像kind load docker-image my-app:v1--name<你的集群名>八、常见问题&排错指南
问题1:拉取kindest/node镜像超时/失败
- 解决:检查Docker镜像加速是否配置成功,或手动拉取国内镜像:
# 以v1.29.0为例,拉取国内镜像并打tagdockerpull registry.aliyuncs.com/google_containers/kindest-node:v1.29.0dockertag registry.aliyuncs.com/google_containers/kindest-node:v1.29.0 kindest/node:v1.29.0
问题2:集群创建时提示内存不足
- 解决:单节点集群建议至少2GB空闲内存,多节点建议4GB+,关闭服务器上其他占用内存的进程。
问题3:kubectl 无法连接集群
- 解决:检查Kind集群是否运行正常,执行
kind get clusters确认集群存在,或重新创建集群:kind delete cluster--name<集群名>kind create cluster--name<集群名>
补充:和其他工具对比
| 工具 | 启动速度 | 资源占用 | 功能完整性 | 适合场景 |
|---|---|---|---|---|
| Kind | 秒级启动 | 极低(容器级) | 完整K8s集群,支持多节点 | 快速测试、CI/CD、学习K8s基础 |
| k3s | 较快 | 极低(二进制精简版) | 轻量版K8s,部分组件裁剪 | 低配置机器、边缘设备、长期学习 |
| Minikube | 较慢 | 较高(默认VM级) | 功能最全,支持插件 | 本地开发、需要完整功能的场景 |
Kind 最大的优势就是轻量、快速、不挑机器。