摘要
本文是一篇保姆级的实践指南,旨在解决学习 Kubernetes (K8s) 时"环境搭建难"的头号痛点。我们将对比分析 Minikube、kind、K3s 和 Docker Desktop Kubernetes 等主流本地 K8s 环境方案的优缺点,帮助你选择最适合自己的工具。随后,文章将提供详细的分步教程,手把手带你使用 Minikube 和 kind (Kubernetes in Docker) 这两种最流行的方式,在自己的 Windows、macOS 或 Linux 电脑上,快速搭建起一个功能完备的单节点 K8s 集群。最后,你将学会使用 kubectl
命令行工具来验证集群状态,为后续的 K8s 实战打下坚实的基础。
引言:你的 K8s 游乐场
在上一篇文章中,我们领略了 Kubernetes 的宏伟蓝图和强大能力。你可能已经摩拳擦掌,迫不及待地想在 K8s 上部署自己的应用了。但是,一个"拦路虎"摆在了面前:我没有 K8s 集群啊!
在生产环境中搭建一个高可用的 K8s 集群是一项非常复杂的工作,需要多台服务器、复杂的网络配置和专业的运维知识。这对于初学者来说,门槛太高了。
幸运的是,社区提供了许多优秀的工具,可以让我们在自己的个人电脑上,轻松模拟出一个功能完整的 K8s 集群,作为我们的学习和实验"游乐场"。
今天,我们将告别一切复杂的理论,专注动手实践。本文的目标只有一个:让你在几分钟内,拥有一个属于自己的、可以任意折腾的 K8s 集群!
一、本地 K8s 环境方案大比拼
在开始之前,我们先快速了解一下几个主流的本地 K8s 方案,以便你做出最适合自己的选择。
工具 | 优点 | 缺点 | 推荐场景 |
---|---|---|---|
Minikube | 功能最全,最接近真实集群,社区成熟,文档丰富。支持多种驱动(VM, Docker)。 | 相对较重,启动稍慢,资源占用稍高。 | 强烈推荐初学者。提供了最完整的 K8s 体验,且有丰富的插件(如 Ingress, Dashboard)。 |
kind (Kubernetes in Docker) | 启动极快,资源占用低,纯粹的 Docker 实现,方便在 CI/CD 中使用。 | 默认功能相对精简,需要手动开启一些功能。 | 熟悉 Docker,追求快速启动和销毁集群的开发者;CI/CD 自动化测试。 |
K3s | 极度轻量,二进制文件仅几十MB,资源消耗极低,专为边缘计算和物联网设计。 | 为了轻量裁剪了一些非核心功能。 | 资源极其有限的环境(如树莓派),或只想快速体验 K8s 核心功能的场景。 |
Docker Desktop | 一键开启,与 Docker 无缝集成,对 Windows/macOS 用户极其友好。 | 定制性差,黑盒,资源占用较高,有时不稳定。 | 已经安装了 Docker Desktop,且不想折腾其他工具的用户。 |
本文将重点介绍 Minikube 和 kind,因为它们是目前社区最主流、最灵活的两种选择。 你可以任选其一进行学习。
二、安装 "遥控器":kubectl
无论你选择哪种 K8s 集群,我们都需要一个"遥控器"来和它交互。这个官方的命令行工具就是 kubectl
。
安装 kubectl
官方文档提供了非常详细的安装指南:Install kubectl
-
macOS:
bash# 使用 Homebrew (推荐) brew install kubectl # 或者手动安装 curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl" chmod +x ./kubectl sudo mv ./kubectl /usr/local/bin/kubectl
-
Windows:
powershell# 使用 Chocolatey (推荐) choco install kubernetes-cli # 或者手动安装 (在 PowerShell 中执行) curl.exe -LO "https://dl.k8s.io/release/v1.28.0/bin/windows/amd64/kubectl.exe" # 将 kubectl.exe 移动到一个在你的 PATH 环境变量中的目录
-
Linux:
bash# 手动安装 curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
安装完成后,运行 kubectl version --client
,如果能看到版本信息,说明 kubectl
安装成功。
三、实战一:使用 Minikube 搭建 K8s 集群
Minikube 会在你的机器上创建一个虚拟机或一个 Docker 容器作为 K8s 节点。对于已经安装了 Docker Desktop 的用户,使用 Docker 驱动是最方便的。
1. 安装 Minikube
-
macOS:
bashbrew install minikube
-
Windows:
powershell# 使用 Chocolatey choco install minikube
-
Linux:
bashcurl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 sudo install minikube-linux-amd64 /usr/local/bin/minikube
2. 启动你的 Minikube 集群
打开终端,执行以下命令:
bash
minikube start --driver=docker
--driver=docker
: 明确告诉 Minikube 使用 Docker 作为底层驱动。这是推荐的方式。如果你没有安装 Docker,Minikube 可能会尝试使用其他虚拟机驱动(如 VirtualBox, Hyper-V)。
第一次启动会比较慢,因为它需要下载 K8s 组件的镜像。请耐心等待。如有些网络问题需要自行解决。
当看到 😄 Done! kubectl is now configured to use "minikube" cluster...
字样时,就表示你的集群已经启动成功了!
3. 管理你的 Minikube 集群
- 查看状态:
minikube status
- 暂停集群:
minikube pause
- 恢复集群:
minikube unpause
- 停止集群 (保留配置):
minikube stop
- 删除集群 (彻底清理):
minikube delete
四、实战二:使用 kind (Kubernetes in Docker) 搭建 K8s 集群
kind 的理念是"用 Docker 容器来运行 K8s 节点",所以它的前提是你必须已经安装了 Docker。
1. 安装 kind
-
macOS:
bashbrew install kind
-
Windows:
powershellchoco install kind
-
Linux:
bashcurl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.17.0/kind-linux-amd64 chmod +x ./kind sudo mv ./kind /usr/local/bin/kind
2. 启动你的 kind 集群
启动 kind 集群非常简单,只需要一条命令:
bash
kind create cluster
kind 会拉取一个特殊的"节点镜像",然后用它启动一个 Docker 容器来模拟 K8s 的控制平面节点。速度非常快,通常一两分钟内就能完成。
默认创建的集群名为 kind
。你也可以指定名字:kind create cluster --name my-k8s-cluster
3. 管理你的 kind 集群
- 查看已有集群:
kind get clusters
- 删除集群:
kind delete cluster
(默认删除名为kind
的集群) - 删除指定集群:
kind delete cluster --name my-k8s-cluster
五、验证你的 K8s 集群
无论你使用 Minikube 还是 kind,一旦集群启动成功,它们都会自动配置好 kubectl
,让其指向新创建的集群。现在,让我们来用 kubectl
这个"遥控器"来检查一下我们的"游乐场"。
1. 查看集群信息
bash
kubectl cluster-info
你会看到 K8s Master (控制平面) 和 CoreDNS 的地址,这表明你的 kubectl
已经能和集群正常通信了。
2. 查看集群中的所有节点
bash
kubectl get nodes
你应该会看到一个节点,名字可能是 minikube
或 kind-control-plane
,其 STATUS
应该是 Ready
。
NAME STATUS ROLES AGE VERSION
minikube Ready control-plane 10m v1.27.4
# 或者
kind-control-plane Ready control-plane 2m v1.27.3
3. (可选) 打开 K8s Dashboard (仅限 Minikube)
Minikube 有一个非常棒的附加功能,可以一键开启图形化的管理界面 Dashboard。
bash
minikube dashboard
这条命令会自动在你的浏览器中打开一个网页,你可以在上面直观地看到集群的各种资源和状态。
总结与预告
恭喜你!你已经成功地在自己的电脑上搭建起了一个功能完备的 Kubernetes 集群,并且学会了使用 kubectl
来与它进行最基本的交互。你不再是 K8s 的门外汉,而是拥有了一片可以自由探索的"试验田"。
今天我们完成了:
- 对比并选择了适合自己的本地 K8s 方案。
- 安装了核心命令行工具
kubectl
。 - 通过 Minikube 或 kind 成功启动了一个 K8s 集群。
- 学会了使用
kubectl get nodes
等命令来验证集群状态。
现在,游乐场的设施已经建好,是时候把我们的"玩具"(应用容器)放进去了。从下一篇开始,我们将正式学习如何在 K8s 中部署和管理应用。
下一篇预告:【云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?】
我们将深入 K8s 的世界,认识它最核心、最基本的两个概念:Pod (容器的"外衣") 和 Deployment (应用的"守护神")。你将学会如何编写第一个 YAML 文件,在 K8s 中部署你的第一个应用。真正的 K8s 之旅,即将启程!