云原生核心技术 (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:

    # 使用 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:

    # 使用 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:

    # 手动安装
    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:
    brew install minikube
    
  • Windows:
    # 使用 Chocolatey
    choco install minikube
    
  • Linux:
    curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
    sudo install minikube-linux-amd64 /usr/local/bin/minikube
    
2. 启动你的 Minikube 集群

打开终端,执行以下命令:

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:
    brew install kind
    
  • Windows:
    choco install kind
    
  • Linux:
    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 集群非常简单,只需要一条命令:

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. 查看集群信息

kubectl cluster-info

你会看到 K8s Master (控制平面) 和 CoreDNS 的地址,这表明你的 kubectl 已经能和集群正常通信了。

2. 查看集群中的所有节点

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。

minikube dashboard

这条命令会自动在你的浏览器中打开一个网页,你可以在上面直观地看到集群的各种资源和状态。
在这里插入图片描述


总结与预告

恭喜你!你已经成功地在自己的电脑上搭建起了一个功能完备的 Kubernetes 集群,并且学会了使用 kubectl 来与它进行最基本的交互。你不再是 K8s 的门外汉,而是拥有了一片可以自由探索的“试验田”。

今天我们完成了:

  • 对比并选择了适合自己的本地 K8s 方案。
  • 安装了核心命令行工具 kubectl
  • 通过 Minikubekind 成功启动了一个 K8s 集群。
  • 学会了使用 kubectl get nodes 等命令来验证集群状态。

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/pingmian/84470.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

线程运行的现象和相关指令

一.多个线程运行的现象 1.规律 交替执行谁先谁后,不由我们控制 2.举例 Slf4j(topic "c.Test6") public class Test06 {public static void main(String[] args) {//创建并运行线程1new Thread(()->{while (true){log.debug("running");…

Windows网络配置避坑指南

Windows网络配置避坑指南 一、网络配置是什么?防火墙的“信任开关”二、何时需要手动切换网络配置文件?​必需切换的场景高危!绝对禁止选错的两个场景三、3种切换指南(Win10/11通用)方法1:图形化操作(推荐小白)​方法2:用PowerShell强制切换方法3:注册表底层修改(应…

基于ThinkPHP8.*的后台管理框架--Veitool框架学习使用

基于ThinkPHP8.*的后台管理框架--Veitool框架学习使用 一、安装部署二、目录结构 一、安装部署 环境要求 Linux、Unix、macOS、Windows Nginx、Apache、IIS PHP > 8.1.0 MySQL > 5.7 下载地址 官网下载:https://www.veitool.com/download 境内仓库&#xff…

Java多线程通信核心机制详解

在Java中,多线程通信与协作主要通过以下几种核心机制实现,每种方式适用于不同的并发场景: 🔄 一、共享变量同步控制(基础方式) // 使用volatile保证可见性 private volatile boolean flag false;// 线程A…

Django知识-视图

视图设置 一个视图函数,简称视图,是一个简单的Python 函数,它接受Web请求并且返回Web响应。代码写在哪里也无所谓,只要它在你的应用目录下面。但是为了方便视图一般被定义在“应用/views.py”文件中。 视图的第一个参数必须为Ht…

DevSecOps实践:CI/CD流水线集成动态安全测试(DAST)工具

🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 让安全扫描成为代码交付的“守门员” 引言:安全漏洞的代价,越早发现越好 在软件开发领域,安全漏洞的修复成本随着开发…

使用CSDN作为Markdown编辑器图床

使用CSDN作为Markdown编辑器图床 一、CSDN图床的优势 MD编辑器在撰写文档时功能强大,但插入图片需借助图床。CSDN作为免费图床,操作简单且稳定性高,适合日常使用。只需将图片上传至CSDN的MD编辑器,即可获取可直接访问的图片地址…

python打卡day51

复习日 作业:day43的时候我们安排大家对自己找的数据集用简单cnn训练,现在可以尝试下借助这几天的知识来实现精度的进一步提高 还是继续用上次的街头食物分类数据集,既然已经统一图片尺寸到了140x140,所以这次选用轻量化模型 Mobi…

Vuex 自动化生成工具

Vuex 自动化生成工具需求文档 1. 需求背景 为提升前端开发效率,减少重复代码编写,需开发一个自动化工具,根据输入参数自动生成完整的 Vuex 存储模块(包括api.js,mutations.js,actions.js,gette…

深入浅出多路归并:原理、实现与实战案例解析

文章目录 二路归并多路归并方法一:指针遍历(多指针比较法)方法二:小根堆法(最小堆归并) 实际场景外部排序 经典题目丑数Ⅱ方法一:三指针法方法二:优先队列法(K路归并&…

Koji构建系统宏定义注入与Tag体系解析

在Red Hat生态的持续集成链条中,Koji作为核心构建系统,其灵活的宏定义机制与精密的Tag体系是保障软件包高效流转的关键。本文将系统阐述在既有构建目标中注入宏定义的技术路径,并深度解析Koji中Target与Tag的概念架构及其版本演进差异。 一、…

【Kubernetes】架构与原理:核心概念、组件协同及容器化部署解析

文章目录 一、前言二、为什么需要 Kubernetes1. 传统部署方法2. 虚拟化部署3. 容器化部署Ⅰ. 基本概念Ⅱ. 容器编排的必要性Ⅲ. 容器化部署的优势4. k8s 的历史与发展三、Kubernetes 基本概念1. k8s 核心架构解析Ⅰ. 控制平面与工作节点Ⅱ. 各组件协同工作原理2. k8s 核心概念Ⅰ…

Pip Manager本地Python包管理器

在Python开发领域,包管理是每个开发者日常工作中不可或缺的一部分。虽然命令行工具pip功能强大,但对于初学者和非技术背景的用户来说,命令行界面往往显得不够友好。如果使用PyCharm,则可以非常简单的管理安装的Python包&#xff1…

vscode界面设置透明度--插件Glasslt-VSC

【快捷键:透明度提高(CtrAlt Z),透明度降低(CtrAlt C)】

OPENCV形态学基础之一膨胀

一.膨胀的原理 数学表达式:dst(x,y) dilate(src(x,y)) max(x,y)src(xx,yy) 膨胀是图像形态学的基本功能之一,膨胀顾名思义就是求图像的局部最大值操作,它的数学表达式是dst(x,y) dilate(src(x,y)) max(x,y)src(xx,yy)。 从数学的角度来看…

彻底禁用Windows Defender通知和图标

方法 一:通过注册表强制隐藏 Defender 图标(永久生效)​​ (适用于彻底隐藏图标,但需谨慎操作) ​​打开注册表编辑器​​ 按 Win R,输入 regedit 回车。 ​​导航到 Defender 相关注册表项​…

Kafka 2.7.0 单节点安装与启动教程(适配 JDK 1.8)

1. 下载与解压 官方下载 Kafka 2.7.0 https://archive.apache.org/dist/kafka/2.7.0/kafka_2.13-2.7.0.tgz 上传到虚拟机(如 /home/wang/soft/kafka)解压: tar -zxvf kafka_2.13-2.7.0.tgz 2. 配置环境变量(可选,便…

23、Python字符串核心机制解析:驻留原理、对象比较与成员检测实战

适合人群:零基础自学者 | 编程小白快速入门 阅读时长:约5分钟 文章目录 一、问题:Python的字符串驻留机制?1、例子1:字符串驻留现象2、答案:(1)字符串驻留 二、问题:Pyth…

pikachu靶场通关笔记22-2 SQL注入05-2-update注入(报错法)

目录 一、SQL注入 二、update注入 三、报错型注入 四、源码分析 1、代码审计 2、渗透思路 五、渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关&#xff…

【prometheus+Grafana篇】基于Prometheus+Grafana实现Redis数据库的监控与可视化

💫《博主主页》: 🔎 CSDN主页 🔎 IF Club社区主页 🔥《擅长领域》:擅长阿里云AnalyticDB for MySQL(分布式数据仓库)、Oracle、MySQL、Linux、prometheus监控;并对SQLserver、NoSQL(MongoDB)有了…