云原生核心技术 (6/12): K8s 从零到一:使用 Minikube/kind 在本地搭建你的第一个 K8s 集群

摘要

本文是一篇保姆级的实践指南,旨在解决学习 Kubernetes (K8s) 时"环境搭建难"的头号痛点。我们将对比分析 Minikube、kind、K3s 和 Docker Desktop Kubernetes 等主流本地 K8s 环境方案的优缺点,帮助你选择最适合自己的工具。随后,文章将提供详细的分步教程,手把手带你使用 Minikubekind (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:

    bash 复制代码
    brew install minikube
  • Windows:

    powershell 复制代码
    # 使用 Chocolatey
    choco install minikube
  • Linux:

    bash 复制代码
    curl -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:

    bash 复制代码
    brew install kind
  • Windows:

    powershell 复制代码
    choco install kind
  • Linux:

    bash 复制代码
    curl -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

你应该会看到一个节点,名字可能是 minikubekind-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
  • 通过 Minikubekind 成功启动了一个 K8s 集群。
  • 学会了使用 kubectl get nodes 等命令来验证集群状态。

现在,游乐场的设施已经建好,是时候把我们的"玩具"(应用容器)放进去了。从下一篇开始,我们将正式学习如何在 K8s 中部署和管理应用。

下一篇预告:【云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?】

我们将深入 K8s 的世界,认识它最核心、最基本的两个概念:Pod (容器的"外衣") 和 Deployment (应用的"守护神")。你将学会如何编写第一个 YAML 文件,在 K8s 中部署你的第一个应用。真正的 K8s 之旅,即将启程!

相关推荐
藥瓿亭36 分钟前
K8S认证|CKS题库+答案| 11. AppArmor
运维·服务器·docker·云原生·容器·kubernetes·cks
955.1 小时前
k8s从入门到放弃之Ingress七层负载
云原生·容器·kubernetes
被一米六支配的恐惧1 小时前
argocd部署cli工具并添加k8s集群
docker·kubernetes·argocd
昌sit!4 小时前
K8S项目需求分析
云原生·容器·kubernetes
广州山泉婚姻7 小时前
高并发场景下的智慧零工平台开发:Spring Boot 3+MyBatis-Flex架构深度实践
分布式·爬虫·云原生
上海运维Q先生7 小时前
Cilium动手实验室: 精通之旅---23.Advanced Gateway API Use Cases
云原生·k8s·cilium
炎码工坊7 小时前
微服务通信安全:OAuth2 从入门到实践
安全·网络安全·微服务·云原生·系统安全
遇见火星9 小时前
Kubernetes服务部署——RabbitMQ(集群版)
容器·kubernetes·rabbitmq
炎码工坊10 小时前
云原生安全实践:CI/CD流水线集成DAST工具
安全·网络安全·微服务·云原生·系统安全
从零开始学习人工智能10 小时前
深入解析 Nacos MCP Router:云原生时代的 MCP 服务调度中枢
云原生