先说结论:k3s 是轻量版 Kubernetes,单节点 2 核 4G 能跑,适合小团队、边缘和自托管;多节点建议 3 台 2 核 4G 起步,生产再上 4 核 8G。它省掉了 K8s 的部分组件和资源开销,但不等于“零运维”,存储、网络、备份仍要自己管。
k3s 适合谁:
- 想用 K8s 但不想维护重型集群的小团队
- 边缘节点、IoT、门店设备
- 自托管多个服务,想要统一编排
- 学习 K8s,资源有限
不适合:大规模生产、需要完整 K8s 生态和托管控制面、没有容器基础的团队。
单节点安装
curl -sfL https://get.k3s.io | sh -
sudo systemctl status k3s
sudo k3s kubectl get nodes
安装脚本会把 k3s 注册为 systemd 服务,默认带 Traefik ingress、local-path 存储和 metrics-server。单节点适合测试和小流量,控制面和业务跑在同一台,故障就全挂。

多节点怎么加
第一台作为 server,拿到 token;其他 server 用 K3S_TOKEN 加入,agent 也类似:
# server 节点
curl -sfL https://get.k3s.io | K3S_TOKEN=你的token sh -s - server \
--tls-san 你的域名或IP
# agent 节点
curl -sfL https://get.k3s.io | K3S_URL=https://server:6443 \
K3S_TOKEN=你的token sh -
生产建议 3 台 server 做高可用,agent 按业务加。server 之间需要 6443 互通,agent 需要 6443 和 8472(flannel)等端口,安全组提前放行。

网络和防火墙
- 6443:K8s API
- 8472/UDP:flannel VXLAN
- 10250:kubelet
- 80/443:ingress
云安全组只放需要的来源,别把 6443 开到公网。多节点跨机房时,flannel 的 MTU 和延迟要测,必要时换网络插件。
存储
k3s 自带 local-path provisioner,PV 落在节点本地盘,Pod 漂移后数据不跟着走。单节点够用;多节点要持久化,建议接 NFS、Longhorn 或云盘 CSI。
kubectl get storageclass
kubectl get pvc -A
部署一个应用
kubectl create deployment web --image=nginx:alpine --replicas=2
kubectl expose deployment web --port=80 --type=ClusterIP
kubectl get pods,svc
生产用 YAML 管理,别只用 kubectl 命令;镜像打固定 tag,配 resources requests/limits,避免一个 Pod 吃满节点。
暴露服务
k3s 默认带 Traefik,用 Ingress 暴露域名;没有域名可以先用 NodePort 测试。HTTPS 用 cert-manager 或 Traefik 的证书配置。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: web
spec:
rules:
- host: app.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: web
port:
number: 80

备份和升级
备份 etcd 或 k3s 的 datastore,备份 PVC 数据,记录 YAML 和镜像版本。升级前先看 release notes,测试环境跑一遍;单节点升级会短暂中断。
# 单节点默认 sqlite,备份 /var/lib/rancher/k3s/server/db
sudo tar czf k3s-db-backup.tgz /var/lib/rancher/k3s/server/db
常见坑
- 安全组没放 8472,节点加不进来
- local-path 数据不跨节点,Pod 漂移丢数据
- 没设 resources,Pod 把节点打满
- 单节点当生产,控制面和业务一起挂
- 镜像用 latest,回滚困难
- 没备份 datastore,集群坏了重建
资源规划
k3s 自身占几百 MB,剩下给系统 Pod 和业务;每个 Pod 设 requests/limits,别让一个应用吃满节点。2 核 4G 建议只跑轻量服务。
监控
用 metrics-server 看资源,Prometheus 看集群和业务;节点 NotReady、Pod 重启、磁盘压力都要告警。
资源、存储、网络、备份四件事做好,k3s 才稳。
别把“能装”当成“能生产”,先小规模验证再放量。
小规模验证,逐步放量,是最稳的路径,好。
常见问题 FAQ
Q1:2 核 4G 能跑 k3s 吗?
能跑单节点和几个小 Pod,系统本身占几百 MB;跑数据库、监控、多个应用会紧,建议 4 核 8G。
Q2:k3s 和 K8s 有什么区别?
k3s 是 CNCF 认证的轻量发行版,去掉云厂商插件、用 sqlite 默认存储、打包常用组件,资源占用更小。
Q3:单节点够用吗?
测试、小流量、边缘够用;生产要控制面高可用,至少 3 台 server,业务多副本。
Q4:数据怎么持久化?
单节点用 local-path,多节点接 NFS/Longhorn/云盘 CSI;数据库建议用独立服务或 Operator,别只靠本地盘。
Q5:需要 Traefik 吗?
k3s 默认带,够用;要更灵活的网关可以换成 Nginx Ingress 或 APISIX。
总结
k3s 适合“想用 K8s 但资源有限”的场景:单节点 2 核 4G 起步,多节点 3 台起,生产加资源和备份。存储、网络、安全组、备份是重点,别把它当零运维。
需要几台机器搭 k3s 测试集群,可以按小时开萤光云香港 CN2 VPS,先跑通单节点再加 agent。







