Lightweight Kubernetes
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 个月前 | ||
| 26 分钟前 | ||
| 2 个月前 | ||
| 6 个月前 | ||
| 5 个月前 | ||
| 28 天前 | ||
| 7 天前 | ||
| 20 小时前 | ||
| 26 分钟前 | ||
| 26 分钟前 | ||
| 10 天前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 9 个月前 | ||
| 28 天前 | ||
| 13 天前 | ||
| 7 天前 | ||
| 5 年前 | ||
| 1 年前 | ||
| 1 个月前 | ||
| 5 年前 | ||
| 7 天前 | ||
| 2 天前 | ||
| 2 天前 | ||
| 9 个月前 | ||
| 7 年前 | ||
| 1 个月前 | ||
| 7 天前 | ||
| 11 个月前 | ||
| 9 个月前 | ||
| 13 天前 | ||
| 2 年前 | ||
| 9 天前 | ||
| 9 天前 | ||
| 30 天前 | ||
| 30 天前 | ||
| 5 年前 | ||
| 2 年前 | ||
| 2 个月前 |
K3s - 轻量级 Kubernetes
轻量级 Kubernetes。生产就绪,易于安装,内存占用减半,整体二进制文件小于 100 MB。
适用于:
- 边缘计算
- 物联网(IoT)
- 持续集成(CI)
- 开发环境
- ARM 架构
- Kubernetes 嵌入式场景
- 无需深入掌握 Kubernetes 集群管理技术的场景
这是什么?
K3s 是一个完全符合标准的生产级 Kubernetes 发行版,具有以下特点:
- 打包为单个二进制文件。
- 增加了对 sqlite3 作为默认存储后端的支持。同时也支持 Etcd3、MariaDB、MySQL 和 Postgres。
- 通过一个简单的启动程序封装 Kubernetes 和其他组件。
- 默认安全配置,为轻量级环境提供合理的默认设置。
- 对操作系统的依赖极少(仅需正常的内核和 cgroup 挂载)。
- 通过 websocket 隧道将 kubelet API 暴露给 Kubernetes 控制平面节点,无需在 Kubernetes 工作节点上暴露端口。
K3s 将以下技术整合到一个统一的发行版中:
- Containerd 和 runc
- Flannel(用于 CNI)
- CoreDNS
- Metrics Server
- Traefik(用于入口流量管理)
- Klipper-lb(作为嵌入式服务负载均衡器提供商)
- Kube-router 网络策略控制器(用于网络策略)
- Helm-controller(允许通过 CRD 驱动部署 Helm 清单)
- Kine(作为数据存储垫片,允许使用其他数据库替代 etcd)
- Local-path-provisioner(用于使用本地存储供应卷)
- 主机工具,如 iptables/nftables、ebtables、ethtool 和 socat
这些技术可以被禁用,或替换为您选择的其他技术。
此外,K3s 通过维护以下功能简化了 Kubernetes 操作:
- 管理 Kubernetes 组件的 TLS 证书
- 管理工作节点与服务器节点之间的连接
- 实时自动部署本地清单中的 Kubernetes 资源(在资源发生更改时)
- 管理嵌入式 etcd 集群
名称由来?
我们希望打造一款内存占用减半的 Kubernetes 安装版本。Kubernetes 是一个 10 个字母的单词,通常简称为 k8s。那么,比 Kubernetes 小一半的东西,就应该是一个 5 个字母的单词,简称为 K3s。另外,数字“3”也可以看作是数字“8”垂直切分后的一半。K3s 没有完整形式,也没有官方发音。
这是一个分支版本吗?
不,它是一个发行版。分支意味着会持续与原始版本产生差异,而这并非 K3s 的目标或做法。K3s 明确旨在不改变任何核心 Kubernetes 功能。我们力求尽可能贴近上游 Kubernetes。不过,我们会维护一小部分补丁(远少于 1000 行代码),这些补丁对 K3s 的使用场景和部署模型至关重要。我们也会为其他组件维护补丁。在可能的情况下,我们会将这些变更贡献回上游项目,例如 containerd 中的 SELinux 支持。这是软件发行版的常见做法。
K3s 之所以是发行版,是因为它打包了使集群能够完全正常运行所需的额外组件和服务,这超出了 vanilla Kubernetes 的范畴。这些是对 ingress、存储类、网络策略、服务负载均衡器甚至容器运行时等组件所采用技术的倾向性选择。这些选择和技术将在这是什么?部分中详细介绍。
K3s 为何比上游 Kubernetes 更轻量或体积更小?
K3s 比上游 Kubernetes 更轻量主要体现在两个方面:
- 运行它所需的内存占用更小
- 包含运行集群所需的所有非容器化组件的二进制文件体积更小
内存占用的减少主要是通过在单个进程内运行多个组件实现的。这消除了原本每个组件都会重复产生的大量开销。
二进制文件体积更小是因为移除了第三方存储驱动程序和云提供商,下面将详细解释。
你从上游 Kubernetes 中移除了哪些内容?
这是一个常见的困惑点,因为情况随着时间发生了变化。早期版本的 K3s 比当前版本移除的内容要多得多。K3s 当前移除了两项内容:
- 内置存储驱动程序
- 内置云服务提供商
这两项都有树形外替代方案,分别是 CSI 和 CCM,它们在 K3s 中可以正常工作,并且上游 Kubernetes 也正朝着这个方向发展。
我们移除这些内容是为了减小二进制文件的大小。移除它们后仍能保持合规性,因为这两项都不会影响 Kubernetes 的核心功能。此外,它们还依赖第三方云或数据中心技术/服务,而在 K3s 的许多使用场景中,这些技术/服务可能并不存在。
快速开始
社区
加入 Slack,与 K3s 开发人员和其他 K3s 用户交流。这是学习和提问的好地方:#k3s 和 #k3s-contributor 以及 CNCF Slack 中的 #k3s 频道。
GitHub Issues - 通过 GitHub 提交你的问题和功能请求。
K3s 开发者社区会在 Zoom 上进行交流。欢迎所有人参加。
将 Linux Foundation iCal 添加到你的日历:
- 阿姆斯特丹/欧洲、中东和非洲时区 太平洋标准时间上午 10:00 - 每月第二个星期二
- 欧洲、中东和非洲/亚太时区友好时间 - 每月第三个星期二
会议记录和议程:https://hackmd.io/@k3s/meet-notes/
会议录制:K3s 频道
你也可以在网站上查看完整详情:https://k3s.io/community
接下来做什么?
查看我们的路线图,了解我们未来的规划。
发布节奏
K3s 与上游 Kubernetes 版本保持同步。我们的目标是在一周内发布补丁版本,在 30 天内发布新的次要版本。
我们的发布版本号反映了所基于的上游 Kubernetes 版本。例如,K3s 版本 v1.27.4+k3s1 对应 Kubernetes 的 v1.27.4 版本。我们添加 +k3s<数字> 形式的后缀,以便能够在使用相同上游 Kubernetes 版本的情况下进行额外发布,同时保持语义化版本规范。例如,如果我们在 v1.27.4+k3s1 中发现一个高严重性漏洞,需要立即发布修复版本,我们会发布 v1.27.4+k3s2。
文档
完整文档请参见官方文档网站。
快速入门 - 安装脚本
install.sh 脚本提供了一种便捷的方式来下载 K3s 并将服务添加到 systemd 或 openrc。
要将 k3s 安装为服务,请运行:
curl -sfL https://get.k3s.io | sh -
kubeconfig 文件将写入 /etc/rancher/k3s/k3s.yaml,并且服务会自动启动或重启。
安装脚本将安装 K3s 及其他实用工具,例如 kubectl、crictl、k3s-killall.sh 和 k3s-uninstall.sh。
sudo kubectl get nodes
K3S_TOKEN 在服务器上的 /var/lib/rancher/k3s/server/node-token 路径下创建。
要在工作节点上进行安装,请传递 K3S_URL 以及 K3S_TOKEN 环境变量,例如:
curl -sfL https://get.k3s.io | K3S_URL=https://myserver:6443 K3S_TOKEN=XXX sh -
手动下载
- 从最新的发布版本下载
k3s,支持 x86_64、armhf、arm64 和 s390x 架构。 - 运行服务器。
sudo k3s server &
# Kubeconfig is written to /etc/rancher/k3s/k3s.yaml
sudo k3s kubectl get nodes
# On a different node run the below. NODE_TOKEN comes from
# /var/lib/rancher/k3s/server/node-token on your server
sudo k3s agent --server https://myserver:6443 --token ${NODE_TOKEN}
贡献指南
如果您有兴趣为 K3s 贡献代码,请查阅我们的贡献指南。
安全说明
K3s 的安全问题可通过发送邮件至 security@k3s.io 进行报告。 请勿就安全问题提交 issue。