选择K3s还是K8s?

454 阅读6分钟

Kubernetes?

对于那些不了解的人来说,Kubernetes 是一个“容器编排平台”。这实际上意味着使用您的容器(现在每个人都听说过Docker ,对吧?)并从一组容器中选择哪台机器来运行该容器。

它还处理诸如容器升级之类的事情,因此,如果您发布了网站的新版本,它将逐渐启动新版本的容器,并逐渐删除旧版本,通常需要一两分钟。

K8s的问题?

K8s 只是 Kubernetes 的缩写(“K”后跟 8 个字母“ubernete”,后跟“s”)。然而,通常当人们谈论 Kubernetes 或 K8s 时,他们谈论的是原始的上游项目,该项目由 Google 设计为一个真正高度可用且高度可扩展的平台。

例如,下面是一个Kubernetes 集群在 YouTube 上每秒执行 1000 万个请求的同时处理零停机更新的示例。

问题是,虽然您可以使用Minikube在本地开发人员机器上运行 Kubernetes ,但如果您要在生产中运行它,您很快就会进入“最佳实践”领域,并提供以下建议:

  1. 将您的主机与节点分开 - 您的主机运行控制平面,而您的节点运行您的工作负载 - 并且两者永远不会相遇。
  2. 在单独的集群上运行 etcd(Kubernetes 状态的数据库)以确保它可以处理负载。
  3. 理想情况下,拥有单独的入口节点,这样即使某些底层节点非常繁忙,它们也可以轻松处理传入流量。

很快,这可以让您获得 3 个 K8s master、3 个 etcd、2 个 Ingress 以及您的节点。因此,在您考虑“我的站点需要多少个节点?”之前,至少需要 8 个中等实例。

不要误解我们,如果您正在运行生产工作负载,这是非常明智的建议。没有什么比在周五深夜尝试调试超载的停机生产集群更糟糕的了!

什么是 k3s?它与 k8s 有什么不同?

K3s 被设计为一个小于 40MB 的单一二进制文件,完全实现了 Kubernetes API。为了实现这一目标,他们删除了许多不需要成为核心一部分并且很容易用附加组件替换的额外驱动程序。

K3s 是经过 CNCF(云原生计算基金会)全面认证的 Kubernetes产品。这意味着您可以编写 YAML 来针对常规Kubernetes 进行操作,并且它们也适用于 k3s 集群。

由于其资源要求较低,因此可以在 RAM 为 512MB 以上的任何机器上运行集群。这意味着我们可以允许 pod 在主节点以及节点上运行。

当然,因为它是一个很小的二进制文件,这意味着我们可以用启动常规 Kubernetes 集群所需时间的一小部分来安装它!我们通常会在两分钟内启动具有少量节点的 k3s 集群,这意味着您可以立即部署应用程序来学习/测试。

它的声誉和采用率也在迅速增长,自 2019 年初推出以来,Github 上已有超过 17,000 颗星,同时它最近还被Stackshare评为2019 年排名第一的新开发者工具。

k3s 和 k8s是一样,还是更好?

当大多数人想到 Kubernetes 时,他们会想到容器会自动在其他节点上启动(如果节点死亡)、容器之间的负载平衡、隔离和滚动部署 - 所有这些优点在“全脂”之间都是相同的K8s 与 k3s。

那么使用k3s有什么区别呢?

首先,单控制平面 k3s 集群中的默认数据库是 SQLite。对于小型集群来说性能非常好,但如果需要更大的集群,可能需要更换为更强大的东西,例如 etcd、MySQL 或 PostgreSQL!幸运的是,k3s 支持所有这些(而上游 Kubernetes 仅支持 etcd)!

另一个真正的区别只有在您是较大的云提供商之一时才真正适用,您可能在上游 Kubernetes 源代码中已经有很多扩展,因为 k3s 删除了所有这些扩展并依赖于标准接口,例如 Container用于实现它们的存储接口(CSI)。但这对最终客户没有影响,只会对服务提供商本身产生影响。

技术差异亮点

特征K3sK8s
尺寸占用空间更小(小于 200MB)占用空间更大(数百 MB)
依赖关系更少的依赖更多依赖项,包括etcd、kube-proxy等。
资源使用情况使用更少的资源(CPU、RAM 等)使用更多资源,特别是对于大型集群
部署更易于部署和管理更复杂的部署和管理
配置简化配置,选项更少具有许多选项的更复杂的配置
可扩展性大型集群的可扩展性有限可扩展到更大的集群和工作负载
高可用性高可用性可能存在限制强大的高可用性选项,包括集群级冗余、自动故障转移等。
特征更少的内置功能和扩展提供广泛的功能和扩展,包括服务发现、负载平衡、自动扩展等。
安全由于代码库较小,攻击面更少更大的代码库具有更多潜在的攻击面
兼容性与某些 Kubernetes 工具和扩展的兼容性有限与各种 Kubernetes 工具和扩展具有强大的兼容性
用例非常适合小型、资源受限的部署、边缘计算和物联网更适合大数据、机器学习、高性能计算等资源要求高的大型复杂部署

请注意,此表仍然不详尽,K3s 和 K8s 之间可能存在其他技术差异,此处未包含。此外,任一平台的适用性将取决于您部署的具体需求,因此在做出决定之前仔细评估您的选择始终是一个好主意。

我应该选择k3s还是k8s?

如果您正在寻找一个轻量级、易于使用的平台,非常适合小型部署、资源有限的环境、边缘计算或物联网,那么 K3s 可能是您更好的选择。K3s 占地面积更小、配置更简单、资源占用更少,可以帮助您以更高效、更经济的方式快速部署和管理容器化应用。

另一方面,如果您正在处理需要高可扩展性、性能和可用性的大型复杂工作负载,那么 K8s 可能是您更好的选择。凭借其强大的功能、广泛的生态系统和广泛的扩展,K8s 可以帮助您轻松管理和编排最复杂的容器化应用程序。

还值得注意的是,K3 和 K8 都有各自的优点和缺点,并且可能比其他用例更适合某些用例。最终,最佳选择将取决于您的具体需求、资源和目标,因此仔细评估您的选择并选择最能满足您要求的平台非常重要。