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 的核心组件,但做了轻量化与集成优化。
┌──────────────────────────────┐
│ 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+)
-
能访问外网(或配置离线镜像仓库)
-
已安装
curl和sudo
🖥️ 单节点部署(开发环境)
curl -sfL https://get.k3s.io | sh -
安装完成后,运行以下命令验证:
sudo kubectl get nodes
输出示例:
NAME STATUS ROLES AGE VERSION
k3s-master Ready control-plane,master 1m v1.30.2+k3s1
🧩 多节点集群部署(生产推荐)
1️⃣ 安装主节点
curl -sfL https://get.k3s.io | sh -
查看并记录主节点 token:
sudo cat /var/lib/rancher/k3s/server/node-token
2️⃣ 加入工作节点
在其他节点执行:
curl -sfL https://get.k3s.io | K3S_URL=https://<master-ip>:6443 K3S_TOKEN=<上面token> sh -
验证集群状态:
sudo kubectl get nodes -o wide
四、K3s 集群管理常用操作
🌱 启停服务
sudo systemctl stop k3s
sudo systemctl start k3s
sudo systemctl restart k3s
工作节点为:
sudo systemctl restart k3s-agent
📦 查看 Pod 状态
kubectl get pods -A
🧭 查看日志
journalctl -u k3s -f
⚙️ 升级 K3s
curl -sfL https://get.k3s.io | INSTALL_K3S_VERSION=v1.30.2+k3s1 sh -
五、K3s 实战:部署一个 Nginx 应用
1️⃣ 创建一个简单的 nginx.yaml:
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️⃣ 部署:
kubectl apply -f nginx.yaml
3️⃣ 访问:
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 |
示例:配置国内镜像加速
mirrors:
docker.io:
endpoint:
- "https://registry.cn-hangzhou.aliyuncs.com"
然后重启 K3s:
sudo systemctl restart k3s
七、K3s 的进阶玩法
-
🌐 外部数据库支持:支持 etcd、MySQL、PostgreSQL
-
🐳 集成 containerd + nerdctl CLI
-
📦 支持 Helm charts:
kubectl apply -f https://.../chart.yaml -
🧠 结合 Ansible 自动化部署
-
☁️ 适配边缘节点(ARM / Jetson / 树莓派)
八、总结
K3s 的出现,让 Kubernetes 的部署不再是一项“重武器工程”。
它轻量、快速、功能完整,既适合 开发者本地测试,也可用于 边缘计算、IoT、AI 推理节点 等实际生产场景。
如果你曾经被 k8s 的复杂性劝退,不妨从 K3s 开始。
✍️ 作者:Weekend
📅 发布日期:2025年10月
💡 关键词:K3s、Kubernetes、轻量化集群、边缘计算、DevOps
更多推荐



所有评论(0)