K8s 仍是 k3s?This is a question

本文来自:Rancher Labs数据库

自k3s问世以来,社区里有许多小伙伴都问过这样的问题“除了中间的数字以外,k3s和K8s的区别在哪里?”,“在二者之间应该如何选择?”。本文将简单介绍它们二者的区别。负载均衡

file

什么是Kubernetes?

正如你们所了解到的那样,Kubernetes是一个“容器编排平台”,也就是说你能够从一组机器中选择其中之一来运行你所须要使用的容器。分布式

它也处理诸如升级你的容器之类的事情,因此若是你发布网站的新版本,它会逐渐使用新版原本启动容器,并放弃旧版本,这一过程仅需一到两分钟。工具

那么,究竟什么是K8s?

K8s是Kubernetes的缩写,由于在K和s之间有8个字母,故称K8s。然而,一般状况下,不管人们谈论的是Kubernetes仍是K8s,他们正在说的是原生上游的Kubernetes,由Google所设计的一个真正高可用且可扩展的平台。学习

问题是,虽然你可使用诸如Minikube之类的工具在本地计算机上运行Kubernetes,可是若是要在生产环境中运行它,你将很快得到一些“最佳实践”的建议,如:测试

  1. 将你的节点和master分开,使用你的master运行控制平面,使用你的节点运行工做负载,二者永远也不会见面
  2. 在独立的集群上运行etcd,以确保它可以处理负载
  3. 理想状态下,分离Ingress节点,以便它们可以轻松处理进入的流量,即使一些底层节点已经十分忙碌

很快,你将拥有3倍的K8S master、3倍的etcd、2倍的Ingress以及你的节点。因此在你到达须要询问“个人站点须要多少个节点”这一阶段以前,实际状况下你至少已经有了8个中型实例。网站

别误会,我不是在指责这些建议很差。相反,若是你正在运行一个生产工做负载,那么这些建议是十分明智的。毕竟,没有比在星期五晚上调试过载的停机生产集群更糟糕的了!ui

可是,若是你只是想学习Kubernetes,或者给一些非核心的应用托管一个development/staging集群,那么采纳上述建议就有些“杀鸡用牛刀“的感受了,不是吗?至少对我来讲是这样的。若是我只是想启动集群来查看个人Kubernetes manifest(包括部署配置等等)是不是正确的,我并不肯意每个月为此付出几百元。设计

k3s的优点在哪里?

Rancher Labs是业界领先的容器软件提供商,其旗舰产品Rancher是一款开源的企业级Kubernetes管理平台,极为出色地管理和安装Kubernetes集群。他们发布了一系列产品,构成他们的生态,例如,Longhorn是一个轻量级而且可靠的容器化分布式块存储解决方案,可用于Kubernetes中,并在近期被收归入CNCF沙箱项目中。闲杂让咱们回到这篇文章的主题,Rancher Labs也是k3s这款轻量级Kubernetes发行版的建立者。3d

k3s将安装Kubernetes所需的一切打包进仅有60MB大小的二进制文件中,而且彻底实现了Kubernetes API。为了减小运行Kubernetes所需的内存,Rancher删除了不少没必要要的驱动程序,并用附加组件对其进行替换。

k3s是一款彻底经过CNCF认证的Kubernetes发行版,这意味着你能够编写YAML来对完整版的Kubernetes进行操做,而且它们也将适用于k3s集群。

因为它只须要极低的资源就能够运行,所以它可以在任何512MB RAM以上的设备上运行集群,换言之,咱们可让pod在master和节点上运行。

固然,既然它是一个小型的二进制文件,那么咱们能够在短期内安装它,相比于启动常规Kubernetes集群,安装它仅需一小部时间。一般咱们仅须要不到2分钟的时间就可以启动一个带有几个节点的k3s集群,也就是说,你能够一有机会就部署应用程序来学习或者进行测试。

听起来不错,实际如何呢?

当人们提到Kubernetes时,他们想到的是若是节点死亡,容器会自动在其余节点上启动,容器之间的负载均衡、隔离和滚动部署,全部这些优势在完整版的Kubernetes和k3s之间是相同的。

可是,k3s并不老是只有优势,不然的话每一个人都会去使用k3s。那么,为何有些人没有使用k3s呢?

首先,当前k3s的版本(k3s v0.8.1)仅能运行单个master,这意味着若是你的master宕机,那么你就没法管理你的集群,即使已有集群要继续运行。可是在k3s v0.10的版本中,多主模式已是实验性功能,也许在下一个版本中可以GA。

其次,在单个master的k3s中,默认的数据存储是SQLite,这对于小型数据库十分友好,可是若是遭受重击,那么SQLite将成为主要痛点。可是,Kubernetes控制平面中发生的更改更可能是与频繁更新部署、调度Pod等有关,所以对于小型开发/测试集群而言,数据库不会形成太大负载。

结 语

K8s和k3s各有优劣,使用场景也有所区别,所以不能一律而论。若是你要进行大型的集群部署,那么我建议你选择使用K8s;若是你处于边缘计算等小型部署的场景或仅仅须要部署一些非核心集群进行开发/测试,那么选择k3s则是性价比更高的选择。

赶忙试试看吧!

欢迎添加小助手(wx:rancher2),进官方技术群,了解更多Kubernetes使用攻略

相关文章
相关标签/搜索