一、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+)

  • 能访问外网(或配置离线镜像仓库)

  • 已安装 curlsudo

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

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 chartskubectl apply -f https://.../chart.yaml

  • 🧠 结合 Ansible 自动化部署

  • ☁️ 适配边缘节点(ARM / Jetson / 树莓派)


八、总结

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

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


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

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐