Kubernetes无疑是容器编排领域的领头羊。但目前,我们看到K3s或轻量级的Kubernetes发行版,轻巧、高效、快速,占用空间极小。鉴于目前企业对于在生产环境中使用K3s还是K8s感到纠结。我们就此讨论一K3s和K8s各自的独特之处。如果你只想在你的企业中使用其中之一,想避免选择的纠结,请和我一起前进。
让我们开始吧!

1. 什么是 K3s?

K3s是Rancher实验室的一个轻量级Kubernetes发行版,是由CNCF完全认证的Kubernetes产品。在K3s中,我们看到运内存占用或集群组件的二进制文件很小。这意味着K3s的体积很小。

由于K3s的二进制文件很小,所以它是非常轻量级的,这使得安装过程更快。此外,用这种轻量级的Kubernetes部署应用程序也更快。K3s有一个基础二进制包,其大小不到100MB。由于它如此之小,我们甚至可以在Raspberry Pi(价格低廉的小型计算机硬件)中运行一个K3s集群。K3s Working Structure(Source: K3s)

 

2. K3s的优势

小型

K3s 的最大优势是它的尺寸最小(小于 100 MB),这有助于它以最少的设置在小型硬件中启动 Kubernetes 集群。

快速部署

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

# 检查就绪代码

takes maybe 30 seconds

k3s kubectl get node

轻量

K3s 由于内存占用小,非常轻量,这有助于 Kubernetes 快速启动和运行。这意味着包含运行集群所需的所有非容器化组件的二进制文件更小。

持续集成

K3s,由于其轻量级的环境和小尺寸,有助于持续集成。它有助于将来自多个贡献者的代码自动集成到单个项目中。

物联网和边缘计算的完美选择
由于支持 ARM64 和 ARMv7,K3s 对于要在资源受限的物联网设备上分发Kubernetes 非常有效。

简单和安全
小于 100 MB 的单个二进制文件封装了 K3s,这使得它变得简单,而且单个二进制文件易于保护,副作用更少。

3. 什么是K8s?

Kubernetes或K8s是最流行的管理容器的编排工具。它具有可移植性、灵活性和可扩展性,同时支持命令式/声明式配置和自动化,作为CNCF的一个毕业项目,其拥有一个庞大的生态系统。

Kubernetes。终极指南
围绕可扩展和可靠服务的需求每天都在成倍增加。市场的驱动力是客户要求他们最喜欢的服务拥有零停机时间,而公司每停机一分钟就会损失数百万美元。如果你遇到过负责保持系统运行的空间,你会[...]。

 

Kubernetes是为适应大规模配置(多达5000个节点)和帮助在生产环境中部署应用程序而设计的。

4. K8s的优势

可移植性

Kubernetes具有高度的可移植性,因为大量的基础资源和环境配置都使用Kubernetes。大多数其他编排器都缺乏这种可移植性,因为它们与特定的运行时或基础设施绑在了一起。

灵活

Kubernetes非常灵活,因为它实际上可以与任何容器运行时(运行容器的程序)一起工作。它是Kubernetes集群的一部分,它依靠CRI-O将Kubernetes与CRI(容器运行时接口)集成。但是,这种整合并不适用所有可用的容器运行时,例如runc或Rkt。它使用kubelet来调度容器。

多云能力

Kubernetes是供应商无关的,这意味着它可以在任何可用的基础设施上运行,包括公共云、私有云和混合云。

可扩展性

根据传入流量来扩展应用程序的能力是任何现代基础设施的基本功能。HPA(HorizontalPod Autoscaler)是Kubernetes中的一个内置资源,它决定了一个服务的副本数量。在Kubernetes中,弹性是一个高度自动化的核心组件。

开放源代码

Kubernetes是开源的,属于CNCF的范畴,因此与其他工具有更好的兼容性,也有助于整个项目在社区驱动的贡献者帮助下快速修复错误和发布。

5. k8s与k3s:区别

K3s在功能上与K8s没有什么不同,但它们有一些区别,使它们显得独特。K3s能比K8s更快地部署应用程序。不仅如此,K3s可以比K8s更快地启动集群。K8s是一个通用的容器编排器,而K3s是一个专门为在裸金属服务器上运行Kubernetes而打造的容器编排器。

Kubernetes使用kubelet,这是一个在每个Kubernetes节点上运行的代理,对该节点上运行的容器进行循环控制。这个代理程序在容器内运行。而K3s并不使用kubelet,它在主机上运行kubelet,使用主机的调度机制来运行容器。

同样,我们可以看到,K3S由于体积小,所以是轻量级的,这有助于它在RaspberryPi等资源有限的物联网设备中运行集群。相比之下,我们可以看到,普通的Kubernetes或K8s在物联网或边缘计算设备中是不可行的。另外,K3s同时支持ARM64和ARMv7的二进制文件结构。

Kubernetes或K8s可以托管运行于多个环境中的工作负载,而K3s只能托管在单一云中运行的工作负载。这主要是因为K3s不包含在多个云上维护复杂的工作负载的能力,因为它的规模很小。

同时,我们可以看到 Kubernetes 借助其大规模的能力,在托管工作负载和多云环境中运行集群具有优势。K3s是一个独立的服务器,与K8s不同,它是Kubernetes集群的一部分。K8s依靠CRI-O来整合Kubernetes与CRI(容器运行时接口),而K3s使用CRI-O与所有支持的容器运行时兼容。K8s使用kubelet来调度容器,但K3s使用主机的调度机制来调度容器。

K3s使用kube-proxy来代理Kubernetes节点的网络连接,但K8s使用kube-proxy来代理单个容器的网络连接。它还使用kube-proxy来设置IP伪装,而K3s不使用kube-proxy来做这个。

同样,K8s使用kubelet来监视Kubernetes节点的配置变化,而K3s不监视Kubernetes节点的配置变化。相反,它从Kubernetes控制平面接收包含配置信息的部署清单,并做出相应的改变。

当涉及到大规模数据环境的编排(自动化任务的编排和协调)时,Kubernetes非常有优势,因为它有存储大量数据的数据库和编排大量对象的能力。同时,k3s对小规模数据的情况也是比较有用的。存储在一个小于100MB的二进制文件中,这将有助于快速启动集群,更快地调度pod和其他任务。

k3s有比k8s更严格的安全部署,因为其攻击面小。k3s的另一个优势是,它可以减少安装、运行或更新Kubernetes集群所需的依赖性和步骤。

6. 我应该选择k3s还是k8s?

中等市值的企业可以决定同时使用K3s和K8s,因为他们不会有一个实际的S

从上面的讨论中可以看出,K3s和K8s都有其优点和缺点,这使得它们彼此之间有独特的区别。两者都非常有用,但鉴于业务情况,不同业务场景的用法会也不一样。

我们已经看到了K8s对于大型应用的好处,牢记一点,一个处理大量数据的高市值企业,其工作负载分布在多个云服务器中,应该使用K8s,这将在很多方面受益。

中等市值的企业可以同时使用K3s和K8s,因为企业在运营过程中不会有确定的吞吐量。他们可以从使用K8s来处理大型工作负载中受益,而对于小规模生产过程中需要快速运行集群的情况,使用K3s会有更有优势。保持K3s和K8s之间的平衡可以帮助企业在保持正常运营的同时节省大量的资金。

没有任何大型应用的小市值企业可以自愿选择K3s,因为K3s在部署小工作负载的应用时非常快速,而且安装、运行和更新也很容易。

热衷于物联网和边缘计算的独立开发者选择K3s作为他们的Kubernetes发布环境会更大优势。他们使用许多计算资源受限的硬件,如RaspberryPi和其他。我们都知道K3s是以一个小的单一二进制文件出现的,并且支持在ARM64和ARMv7的物联网设备上运行。

最后的想法

您可能认为 k3s 比“全脂”k8s 更好,但让我提醒您 k3s 存在局限性。目前,k3s 不支持在主节点上运行除 SQLite 以外的任何其他数据库,也不支持多个主节点。因此,在选择默认容器编排器时,定义需求和目标非常重要。

我希望你在这篇文章之后对 Kubernetes 和 k3s 有相当程度的了解。如果您想学习和探索,官方教程将是一个很好的起点。

转自:https://www.modb.pro/db/161082

 

k8s vs k3s: 差异解析的更多相关文章

  1. 在k8s中搭建可解析hostname的DNS服务

    2016-01-25更新 上篇文章总结k8s中搭建hbase时,遇到Pod中hostname的DNS解析问题,本篇将通过修改kube2sky源码来解决这个问题. 1 前言 kube2sky在Githu ...

  2. K8s 还是 k3s?This is a question

    本文来自:Rancher Labs 自k3s问世以来,社区里有许多小伙伴都问过这样的问题"除了中间的数字之外,k3s和K8s的区别在哪里?","在两者之间应该如何选择?& ...

  3. jenkins流水线部署springboot应用到k8s集群(k3s+jenkins+gitee+maven+docker)(1)

    前言:前面写过2篇文章,介绍jenkins通过slave节点部署构建并发布应用到虚拟机中,本篇介绍k8s(k3s)环境下,部署jenkins,通过流水线脚本方式构建发布应用到k8s(k3s)集群环境中 ...

  4. k8s的内置DNS增加父系DNS方法

    我们都知道K8S有内置DNS,是在搭建K8S时候以容器方式起来的,那么有时候我们需要解析内部DNS地址该怎么办呢,我们可以搭建个内部DNS 但是怎么让K8S通过内部DNS解析呢? 可以尝试如下方法 在 ...

  5. Apache入门篇(三)之apache2.4.33的新特性解析与虚拟主机实战

    1.http 2.4新特性 新特性: (1) 在编译时可以将多个MPM构建为可加载模块,可以在运行时通过LoadModule指令配置所选的MPM: (2) 2.2版本的event MPM在实验阶段,到 ...

  6. Rancher + K8S RestApi使用

      1前言 1.1使用的软件及版本 软件 版本号 Rancher 1.6stable Kubernetes 1.8.3 Docker 1.12.6 1.2 Rancher与K8S的RESTAPI差异 ...

  7. ASP.NET Core on K8S深入学习(1)K8S基础知识与集群搭建

    在上一个小系列文章<ASP.NET Core on K8S学习初探>中,通过在Windows上通过Docker for Windows搭建了一个单节点的K8S环境,并初步尝试将ASP.NE ...

  8. Ansible自动化部署K8S集群

    Ansible自动化部署K8S集群 1.1 Ansible介绍 Ansible是一种IT自动化工具.它可以配置系统,部署软件以及协调更高级的IT任务,例如持续部署,滚动更新.Ansible适用于管理企 ...

  9. k3s新版本发布!支持Helm3!还有其他重要更新Highlight!

    前 言 两个月前,业界应用最为广泛的Kubernetes管理平台创建者Rancher Labs(以下简称Rancher)在KubeCon2019北美峰会上宣布,Rancher打造的轻量级Kuberne ...

随机推荐

  1. vue大型电商项目尚品汇(后台篇)day01

    开始我们后台篇的内容,前面处理了一些事情,去学校完成授位仪式,由校长授位合影,青春不留遗憾,然后还换了一个电脑,征战了四年的神船终于退役了,各种各样的小毛病是真的烦人. 现在正式开始后台篇的内容,做了 ...

  2. Camunda如何适配国产数据库达梦

    前言 camunda流程引擎官方支持的数据库有:MySQL .MariaDB .Oracle .DB2 .PostgreSQL .SQL Server.H2.对于其他类型的数据库如何支持,尤其是国产数 ...

  3. Python双人五子棋

    这篇文章旨在介绍一个双人的五子棋程序.再次重申,本人不擅长对代码的可读性进行优化,所以可能有些杂乱(在所难免). 先瞅一眼效果图: 请注意,这个棋子--是这么圆润立体!本程序不需任何素材图片,完全用代 ...

  4. SpringBoot整合SpringSecurityOauth2实现鉴权-动态权限

    写在前面 思考:为什么需要鉴权呢? 系统开发好上线后,API接口会暴露在互联网上会存在一定的安全风险,例如:爬虫.恶意访问等.因此,我们需要对非开放API接口进行用户鉴权,鉴权通过之后再允许调用. 准 ...

  5. SpringBoot的浅浅配置和小整合

    SpringBoot的浅浅配置和小整合 本文如题,就是浅浅记录一下学习的过程中一些过程,比较简单,并没有多少深度.谢谢! SpringBoot创建 从IDEA中新建项目或者模块.注意jdk版本,一般不 ...

  6. 【Parcel 2 + Vue 3】从0到1搭建一款极快,零配置的Vue3项目构建工具

    前言 一周时间,没见了,大家有没有想我啊!哈哈!我知道肯定会有的.言归正传,我们切入正题.上一篇文章中我主要介绍了使用Vite2+Vue3+Ts如何更快的入手项目.那么,今天我将会带领大家认识一个新的 ...

  7. Python:一个闹钟

    随着一个<霍格沃茨:一段校史>风格的大字(呃,这字好像并不大--)标题的出现,无聊的我没事干,又开始整活了~ 之前我做的程序,一个使用了Tkinter库,一个则是Pygame,总之都是带有 ...

  8. 利用websocket实现手机扫码登陆后,同步登陆信息到web端页面

    新手必看 广播系统 事件系统 准备工作 初始化项目 引入 laravel-websockets 软件包 启动 websocket 监听 主要流程 创建两个页面 建立 socket 连接 手机端扫码登陆 ...

  9. 11.2 Android Studio如何切换主题和更改字体

    如何进入设置? 全平台启动界面 Configure-Preferences 主界面 Windows版本:File-Settings Mac版本:Android Studio-Preferences 外 ...

  10. 活动报名 | 如何基于开源项目 Tapdata PDK,快速完成数据源和目标的开发?

      近日,Tapdata 启动 PDK 插件生态共建计划,宣布开源插件开发框架 Tapdata PDK,将自身的数据接口能力开放出来,帮助开发者根据实际需求,自助接入数据源和目标,快速开启「Data ...