K3S vs K0S
· 阅读需 10 分钟
vs. | k0s | k3s |
---|---|---|
since | 2020-06 | 2019-03 |
by | Mirants | Rancher/SUSE |
Governance | Mirants | CNCF |
Github | k0sproject/k0s | k3s-io/k3s |
Stars | ||
Issues | ||
CNI | kube-router,calico | flannel |
CRI | containerd | containerd |
CSI | OpenEBS | local-path-provisioner |
Windows | ✅ - calico | ❌ |
Arch | amd64,arm,arm64 | amd64,arm,arm64 |
LoadBalancer | n/a | klipper-lb |
Ingress | n/a | traefik |
Controller-Worker | konnectivity | remotedialer - WebSocket 反向代理 |
文档 | ⭐️⭐️ | ⭐️⭐️ |
成熟 | ⭐️⭐️ | ⭐️⭐️⭐️ |
国内环境友好 | ⭐️ | ⭐️⭐️⭐️ |
Pod CIDR | 10.244.0.0/16 | 10.42.0.0/16 |
Service CIDR | 10.96.0.0/12 | 10.43.0.0/16 |
CoreDNS | 10.96.0.10 | 10.43.0.10 |
configuration | /etc/k0s/k0s.yaml | /etc/rancher/k3s/config.yaml |
registry | /etc/k0s/k0s.yaml | /etc/rancher/k3s/registry.yaml |
data-dir | /var/lib/k0s | /var/lib/rancher/k3s |
bin-dir | /var/lib/k0s/bin | /var/lib/rancher/k3s/data/current |
kubeconfig | /var/lib/k0s/pki/admin.conf | /etc/rancher/k3s/k3s.yaml |
manifest | /var/lib/k0s/manifests | /var/lib/rancher/k3s/server/manifests |
local storage | /var/openebs/local | /var/lib/rancher/k3s/storage/ |
服务运行方式 | supervisor - 独立多进程 | embeded - 单进程 |
containerd | bundled | 系统/bundled |
- k0s
- CIS security benchmark
- 符合 FIPS 140-2 要求
- bundled
- iptables, containerd, ctr, runc, etcd, kine
- openebs
- openebs-hostpath -> /var/openebs/local
- kube-router
- konnectivity
- helm-controller
- k3s
- CNCF 项目 - 脱离了 rancher
- bundled
- containerd, ctr, runc, etcd, kine
- helm-controller - 支持部署 helm chart, CDR 控制
- traefik - 提供 ingress 能力 - 通过 helm 部署
- local-path-provisioner - 提供基于本地目录的存储类
- 默认 /var/lib/rancher/k3s/storage
- klipper-lb - 基于 iptable 转发的负载均衡
警告
- k3s 默认包含较多组件,部署后 可使用性 更高,但部分组件( traefik,klipper-lb,local-path-provisioner )不建议生产使用,提供这些组件更多是为了保证功能完整,开箱即用。
- 使用 k3s 不推荐使用内置 traefik 和 klipper-lb
- ingress 建议自行安装 - 比较重要的核心组件
- 建议使用 metallb 替代 klipper-lb
- 因为 Controller-Worker 网络不同,k3s 和 k0s 无法混合使用
命令对比
k0s | k3s |
---|---|
k0s systinfo | ./contrib/util/check-config.sh |
k0s backup | k3s etcd-snapshot |
k0s restore | k3s server --cluster-reset-restore-path |
k0s controller | k3s server |
k0s worker | k3s agent |
n/a | k3s crictl |
k0s install | https://get.k3s.io 会安装 systemd, openrc 服务 |
k0s reset | n/a |
k0s kubeconfig create | n/a |
k0sctl | n/a |
k0sctl apply | ~autok3s |
k0sctl backup | n/a |
--- | --- |
k0s kubectl | k3s kubectl |
k0s ctr | k3s ctr |
如何选择
相同点
- 面向相同用户群体和使用场景,非常类似
- 核心都使用 kine - 区别不大
- 都有大的企业支撑开发
选择考量
- k3s
- 更成熟 - 存在时间更长,使用的更独立
- 社区更大 - 社区还与 rancher、rke 有交集
- 中文化社区友好
- 单节点默认 SQLite
- k0s
- 更新 - 2020 年 - 目前已经成熟,可以用于生产
- 用户体验更好
- k0sctl
- 能更好的辅助维护更多的集群,减少对 脚本/ansible 的依赖。
- 更好升级
- 更好备份
- 单节点默认 etcd/kine