K3s:面向边缘和更多场景的轻量级Kubernetes

K3S

什么是 K3s?

K3s 是一个由 Rancher(现为 SUSE 旗下)开发的轻量级、CNCF 认证的 Kubernetes 发行版。它专为资源受限的环境设计,例如边缘计算、物联网设备以及开发测试集群。名称“K3s”寓意着它是一个更小、更轻量的 Kubernetes(类似于“一半大小的 K8s”,其中 8 被替换为 3)。

K3s 将 Kubernetes 打包进一个小于 100 MB 的单个二进制文件中,大幅减少了依赖项和内存占用,同时保持了对 Kubernetes API 的完全兼容性。它非常适合那些完整版 Kubernetes 过于庞大或复杂的场景。

起源与理念

K3s 的诞生是为了满足在低功耗设备(如树莓派)和资源有限的边缘环境中可靠运行 Kubernetes 的需求。它移除了可选组件,用更轻量的替代品替换了部分组件,并简化了安装和运维。该项目是开源的,在边缘计算、CI/CD 和开发环境中获得了广泛采用。

关键特性

  • 轻量级:单个二进制文件,内存要求低(建议 512 MB 以上),CPU 占用小。
  • 安装简单:一条命令即可完成安装:curl -sfL https://get.k3s.io | sh -
  • 高可用:支持嵌入式 etcd(单节点可用 SQLite),并提供 HA 控制平面。
  • 内置组件:默认包含 containerd、Flannel、CoreDNS 和 Traefik ingress,减少外部依赖。
  • 自动更新:可选系统升级控制器,轻松升级集群。
  • 安全性:以较低权限运行,支持 SELinux,并自动管理 TLS 证书。
  • 边缘原生:支持离线环境、离线安装,启动速度快,延迟低。
  • ARM 支持:完全支持 ARM64 和 ARMv7,非常适合树莓派集群。

架构

K3s 通过以下方式简化了 Kubernetes 架构:

  • 用嵌入式 SQLite 数据库替换 etcd(单节点集群),多节点 HA 时可选用 etcd。
  • 使用 containerd 作为容器运行时(也可通过 shim 支持 Docker)。
  • 打包核心组件,如 Flannel(CNI)、CoreDNS 和 Traefik(ingress),这些组件可按需禁用。
  • 作为单个进程运行k3s server),该进程整合了 kube-apiserver、kube-controller-manager、kube-scheduler 和 kubelet。
  • 自动生成 TLS 证书,简化证书管理。

部署模式有两种:

  • 单节点服务器:控制平面和工作节点合一。
  • 多节点 HA:多个服务器节点使用嵌入式 etcd 或外部数据存储,外加工作节点。

使用场景

  • 边缘计算:在网关、工业 PC 或远程站点运行 Kubernetes,带宽有限的环境。
  • 物联网:在树莓派、NVIDIA Jetson 等设备上管理容器化应用。
  • 开发与测试:用于本地开发、CI 流水线或临时环境的轻量级集群。
  • CI/CD 执行器:在资源受限的构建节点或靠近数据源的位置运行流水线。
  • 离线环境:在断网位置(如船舶、石油平台)部署应用。
  • 教育和爱好者:在普通硬件上学习 Kubernetes,无需云成本。

安装与入门

安装 K3s 非常简单:

curl -sfL https://get.k3s.io | sh -
 安装后,可通过 k3s kubectl 使用 kubectl

对于多节点集群,可使用令牌添加 agent:

 在 server 节点
curl -sfL https://get.k3s.io | K3S_TOKEN=SECRET sh -

 在 agent 节点
curl -sfL https://get.k3s.io | K3S_URL=https://server:6443 K3S_TOKEN=SECRET sh -

K3s 还支持 Helm Chart,方便应用部署。

与标准 Kubernetes 的对比

特性 标准 Kubernetes K3s
二进制大小 ~1 GB+(取决于发行版) < 100 MB
内存占用 建议 ~2 GB 建议 ~512 MB
安装复杂度 高(需要 kubeadm 等工具) 一条命令
默认数据存储 etcd SQLite / etcd
内置组件 各不相同 containerd, Flannel, CoreDNS, Traefik
边缘/IoT 聚焦
高可用 是(使用嵌入式 etcd)

与其他轻量级 Kubernetes 的对比

  • MicroK8s:Ubuntu 生态,使用 snap 包,包含更多附加组件,比 K3s 稍重。
  • k0s:另一个轻量级发行版,目标相似,但 K3s 更成熟且被广泛采用。
  • Minikube:专为本地开发设计,不适用于生产边缘。
  • k3d:在 Docker 中运行 K3s,适合测试,但不适用于裸机。

社区与支持

K3s 是开源项目(Apache 2.0 许可证),在 GitHub、Slack 和论坛上有活跃的社区。许多组织在生产环境中使用它,并且它是 CNCF 景观的一部分。Rancher 为企业提供商业支持。

总结

K3s 将 Kubernetes 带到了以往无法触及的地方——边缘设备、小型硬件和资源受限的环境。其简洁性、低资源消耗以及对 Kubernetes API 的兼容性,使其成为生产级边缘部署和开发集群的优秀选择。无论你是在搭建树莓派集群,还是在远程位置部署应用,K3s 都能提供一个轻量级、功能完备的 Kubernetes 体验。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐