K3s和K8s之间的主要区别有哪些

K8s 和 K3s 对用户提供了相同的功能接口。

如果你有一个 Kubernetes YAML 清单,你可以在两个集群中使用任何一个进行部署,而无需进行修改。

这两个发行版的区别在于它们的打包方式和包含的组件。

以下是一些你应该考虑的关键特点:

默认安装的组件

K8s 和 K3s 打包了不同的组件来实现 Kubernetes 的架构。

其中最大的变化之一就是控制平面使用的数据存储:上游 Kubernetes 使用 etcd,而 K3s 选择使用内置的 SQLite 数据库。

这通常提高了性能并减小了二进制文件的大小,但可能不适用于大规模集群。

如果需要,K3s 也可以连接到外部的 etcd 或使用 K3s 内置的 etcd 数据存储,以及其他基于 SQL 的数据库,如 MySQL 和 PostgreSQL。

标准的 Kubernetes 发行版只包括控制平面所需的组件。

K3s 还内置了常用的生态工具,比如:kubectl。

K3s 集成了 Helm 支持,可以通过将 Helm Chart 表示为集群中的 HelmChart 对象来部署 Helm Chart。

然而,上游 Kubernetes 不理解 Helm;你需要单独安装 Helm CLI 并使用其命令来安装你的 Chart。

K8s 和 K3s 都使用 containerd 作为默认的容器运行时,但这可以进行定制。

K3s 还包含了其他几个来自社区的组件,包括用于 Pod 网络的 flannel 以及作为入口控制器和内置负载均衡器的 Traefik。

Kubernetes 让你自己选择和安装这些工具,而 K3s 则内置了我们常用的工具。

当你不想花太多的时间成本去学习 K8s 各个组件作用时,K3s 是更好的选择。

它可以启动一个功能完整的集群,并且可用于生产。

图片[1]-K3s和K8s之间的主要区别有哪些-不念博客

资源要求

K3s 可以在 1C 512MB 的设备上运行,K3s 二进制文件大小不到 60 MB,并且不需要外部依赖。

使用 kubeadm 创建的集群具有更高的资源需求。文档建议至少有两个空闲的 CPU 核和 2 GB 的内存。

控制平面组件的增加开销意味着需要更多的硬件资源才能达到相同的结果。这在云上部署集群时可能会增加成本。

K3s 是资源受限环境的优先选择。这是该项目的核心关注领域。

请记住,虽然 K3s 可以运行在 512 MB 内存的设备上,但并不推荐这样,因为你需要给应用程序预留运行空间。

升级

K3s 提供简化的集群升级体验。你只需再次运行安装脚本即可下载最新版本并自动完成升级:

$ curl -sfL https://get.k3s.io | sh -

在每个节点上重复执行此命令将使你的集群升级到最新的稳定版本,无需任何手动干预。

对于使用 kubeadm 创建的 K8s 集群进行升级需要执行几个额外的步骤。你需要获取最新版本的 kubeadm:

# Updating to v1.24.1
$ apt-get update
$ apt-get install -y kubeadm=1.24.1

接下来,使用 kubeadm 升级你的控制平面:

$ kubeadm upgrade apply v1.24.1

最后,升级每个工作节点上的 kubelet 和 kubectl:

$ apt-get update
$ apt-get install -y kubelet=1.24.1 kubectl=1.24.1
$ systemctl daemon-reload
$ systemctl restart kubelet

K3s 再次提供了更简单、无需干预的体验。

Kubeadm 的升级同样也相对简单,但需要运行更多的命令。

这增加了升级过程中出错的可能性。而使用 K3s,你只需调用安装脚本并等待集群更新即可。

速度

在等效硬件上部署的 K8s 集群和 K3s 集群应该可以以相似的性能运行你的容器,因为它们使用相同的 containerd 运行时。

然而,K3s 非常轻巧,它安装和启动控制平面的速度要比 K8s 快得多。

相比之下,上游的 Kubernetes 可能需要几分钟才能启动(而 K3s 通常在一分钟内可用)。

这使得 K3s 更适合于临时的集群,例如本地开发和测试环境。

你可以快速启动一个集群,使用后再将 K3s 关闭。

安全

K3s 在设计上是安全的,并提供了一个最小的攻击面。所有组件都打包在一个二进制文件中,减少的依赖关系使得安全漏洞的出现可能性较小。

这并不意味着 K8s 是不安全的。Kubernetes 已成为最受欢迎的开源项目之一,被全球各大公司采用。它经过定期审查,以确保集群受到攻击的保护。

无论你使用哪种解决方案,你都应该在安装后加强集群的安全保护。K3s 和 Kubernetes 都有自己的安全建议,用于创建安全的集群。

© 版权声明
THE END