跳转至

0. 概念与思路

在开始敲击命令之前,我们需要先建立对 K3s 的认知模型,并理解本教程的设计思路。

1. 什么是 K3s?

K3s 是由 Rancher Labs(现 SUSE)推出的轻量级 Kubernetes 发行版。它不是 Kubernetes 的“缩水版”,而是通过裁剪非必要功能、打包依赖,实现了与上游 Kubernetes 完全兼容(CNCF 认证)但体积更小、资源占用更低的发行版。

1.1 "5 Less" 核心特性

  • Less Size(体积更小):二进制文件小于 100MB。
  • Less Resources(资源更省):512MB 内存即可运行。
  • Less Complexity(复杂度更低):单一二进制文件,集成了 Containerd、Flannel、CoreDNS、Traefik 等组件。
  • Less Dependencies(依赖更少):内核依赖项极少,开箱即用。
  • Less Steps(步骤更简):一条命令即可完成集群搭建。

1.2 架构差异:K3s vs K8s

特性 Kubernetes (K8s) K3s
数据存储 Etcd (内存消耗大) SQLite (默认), Etcd, MySQL, Postgres
容器运行时 Docker/Containerd (需单独配置) 内置 Containerd
网络插件 需单独安装 (Calico/Flannel) 内置 Flannel (支持更换)
Ingress 需单独安装 (Nginx/Traefik) 内置 Traefik
组件进程 kube-apiserver, kubelet 等独立进程 所有控制平面组件运行在一个 Server 进程中
云提供商 内置大量 Cloud Provider 代码 移除内置代码,使用 CSI/CCM 接口

2. 为什么选择 K3s?(应用场景)

K3s 的设计初衷并非替代云厂商托管的 K8s(如 EKS/GKE),而是填补边缘计算轻量级环境的空白。

2.1 典型场景

  1. 边缘计算与 IoT
    • 在树莓派、工控机、ATM 机等资源受限设备上运行。
    • 利用 K3s 的单二进制特性,实现无人值守的自动化部署。
  2. 开发与测试环境
    • 开发人员在笔记本上快速启动 K8s 集群,且不拖慢系统。
    • CI/CD 流水线中快速拉起临时集群进行集成测试(Docker-in-Docker 场景)。
  3. 私有化交付
    • 软件供应商将应用打包在 K3s 中,整体交付给客户,降低客户的运维门槛。
  4. 中小企业生产环境
    • 对于几十个节点的集群,K3s + Etcd 的组合完全能够胜任生产负载,且运维成本远低于标准 K8s。

3. 教程设计思路

本教程并非简单的命令堆砌,而是遵循从单点突破到全局掌控的学习路径。

3.1 阶段演进

  • 阶段一:单机上手(Chapter 1-3)
    • 目标:让集群跑起来,应用部署上去。
    • 重点:安装脚本、国内镜像源配置(痛点)、基本工作负载。
    • 思考:如何解决国内网络环境下的拉取问题?如何理解 Pod 是最小调度单元?
  • 阶段二:组网与连接(Chapter 4-5)
    • 目标:让服务可被访问,让节点跨越物理限制。
    • 重点:Service 类型详解、Tailscale 跨地域组网(亮点)。
    • 思考:如何让家里的树莓派和云服务器组成一个内网互通的集群?
  • 阶段三:生产加固(Chapter 6-9)
    • 目标:从“能用”到“好用”、“敢用”。
    • 重点:存储持久化、HTTPS 证书自动化、监控告警、数据备份。
    • 思考:如果节点挂了数据怎么办?如何知道集群快撑不住了?
  • 阶段四:验证与验收(Chapter 10)
    • 目标:验证成果,确保质量。
    • 重点:自动化测试脚本、故障排查手册。

4. 学习建议

  1. 动手实践:Kubernetes 是“练”出来的,不是“看”出来的。请务必准备至少一台 Linux 虚拟机(建议 Ubuntu 20.04/22.04)。
  2. 关注原理:在执行命令时,思考“为什么 K3s 不需要初始化 kubeadm init?”、“Flannel 是如何打通容器网络的?”。
  3. 拥抱失败:遇到 CrashLoopBackOff 不要慌,学会用 kubectl describekubectl logs 才是进阶的关键。

准备好了吗?让我们开始 基础部署 之旅。