K3s 技术操作指南:轻量级 Kubernetes 的极致实践

🐋 K3s 技术操作指南:轻量级 Kubernetes 的极致实践

K3s 是一种高可用性、经过认证的 Kubernetes 发行版,专为无人值守、资源受限、远程运维或物联网设备内部的生产工作负载而设计。


一、K3s 简介

在容器化与微服务的时代,Kubernetes 几乎成为了分布式部署的标准平台。但对于边缘计算、小型集群、开发测试环境来说,传统 Kubernetes(k8s)过于“笨重” —— 组件繁多、资源占用高、部署复杂。

K3s 正是为了解决这一痛点而诞生的。
它由 Rancher Labs(后被 SUSE 收购)开发,是一款 轻量级、完全兼容 Kubernetes API 的发行版,专为资源受限环境和边缘计算场景设计。

🚀 核心特性

  • 轻量化:单个二进制文件(<100MB),组件合并简化。
  • ⚙️ 快速安装:一条命令即可完成安装。
  • 🧠 内置 SQLite 数据库(可替换为外部 etcd 或 MySQL)。
  • 🔒 自动 TLS 证书管理
  • 🌐 支持 ARM/ARM64/x86 多架构
  • 🧩 兼容标准 Kubernetes 生态(kubectl、Helm、CNI、CSI 等)。

二、K3s 架构概览

K3s 保留了 Kubernetes 的核心组件,但做了轻量化与集成优化。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
┌──────────────────────────────┐
│ K3s Master │
│ ┌───────────────┐ │
│ │ API Server │ │
│ │ Controller │ │
│ │ Scheduler │ │
│ │ SQLite/etcd │ │
│ └───────────────┘ │
└────────────┬─────────────────┘

(K3s Agent)

┌────────────┴────────────┐
│ Node1 │
│ └── containerd / kubelet│
│ └── flannel / coredns │
└─────────────────────────┘

🧩 主要区别

组件 K3s 变化
kube-proxy 替换为轻量化版本
container runtime 默认使用 containerd
CNI 默认使用 flannel,可替换
数据存储 默认 SQLite,可配置外部 DB
控制面 可单节点/多主 HA 模式部署

三、安装与部署

✅ 环境准备

系统要求:

  • Ubuntu 20.04+/CentOS 8+/Rocky Linux
  • 至少 2 CPU / 2GB RAM(建议 4GB+)
  • 能访问外网(或配置离线镜像仓库)
  • 已安装 curlsudo

🖥️ 单节点部署(开发环境)

1
curl -sfL https://get.k3s.io | sh -

安装完成后,运行以下命令验证:

1
sudo kubectl get nodes

输出示例:

1
2
NAME            STATUS   ROLES                  AGE   VERSION
k3s-master Ready control-plane,master 1m v1.30.2+k3s1

🧩 多节点集群部署(生产推荐)

1️⃣ 安装主节点

1
curl -sfL https://get.k3s.io | sh -

查看并记录主节点 token:

1
sudo cat /var/lib/rancher/k3s/server/node-token

2️⃣ 加入工作节点

在其他节点执行:

1
curl -sfL https://get.k3s.io | K3S_URL=https://<master-ip>:6443 K3S_TOKEN=<上面token> sh -

验证集群状态:

1
sudo kubectl get nodes -o wide

四、K3s 集群管理常用操作

🌱 启停服务

1
2
3
sudo systemctl stop k3s
sudo systemctl start k3s
sudo systemctl restart k3s

工作节点为:

1
sudo systemctl restart k3s-agent

📦 查看 Pod 状态

1
kubectl get pods -A

🧭 查看日志

1
journalctl -u k3s -f

⚙️ 升级 K3s

1
curl -sfL https://get.k3s.io | INSTALL_K3S_VERSION=v1.30.2+k3s1 sh -

五、K3s 实战:部署一个 Nginx 应用

1️⃣ 创建一个简单的 nginx.yaml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.25
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
type: NodePort
selector:
app: nginx
ports:
- port: 80
targetPort: 80
nodePort: 30080

2️⃣ 部署:

1
kubectl apply -f nginx.yaml

3️⃣ 访问:

1
http://<任意节点IP>:30080

六、常见问题与排查技巧

问题 解决方法
节点一直 NotReady 检查 flannel/CNI 网络是否正常:kubectl get pods -n kube-system
Agent 无法加入集群 确认防火墙开放 6443 端口;检查 token 是否一致
镜像拉取失败 配置国内镜像源 /etc/rancher/k3s/registries.yaml
Kubectl 无法访问 使用 sudo cat /etc/rancher/k3s/k3s.yaml 配置 kubeconfig

示例:配置国内镜像加速

1
2
3
4
mirrors:
docker.io:
endpoint:
- "https://registry.cn-hangzhou.aliyuncs.com"

然后重启 K3s:

1
sudo systemctl restart k3s

七、K3s 的进阶玩法

  • 🌐 外部数据库支持:支持 etcd、MySQL、PostgreSQL
  • 🐳 集成 containerd + nerdctl CLI
  • 📦 支持 Helm chartskubectl apply -f https://.../chart.yaml
  • 🧠 结合 Ansible 自动化部署
  • ☁️ 适配边缘节点(ARM / Jetson / 树莓派)

八、总结

K3s 的出现,让 Kubernetes 的部署不再是一项“重武器工程”。
它轻量、快速、功能完整,既适合 开发者本地测试,也可用于 边缘计算、IoT、AI 推理节点 等实际生产场景。

如果你曾经被 k8s 的复杂性劝退,不妨从 K3s 开始。


✍️ 作者:Weekend
📅 发布日期:2025年10月
💡 关键词:K3s、Kubernetes、轻量化集群、边缘计算、DevOps