这篇博客文章是2020
年2
月在英国伯明翰举行的Cloud Native
聚会上的演讲改编。它详细介绍了k3s
的优势,k3s
是作为我们托管Kubernetes
服务的一部分而部署的轻量级Kubernetes
发行版。它由Rancher Labs
开发;可以快速部署以进行测试、CI/CD
、运行并掌握Kubernetes
,而不必致力于Kubernetes
大型基础架构及其复杂性带来的成本。
最好将k3s
视为Kubernetes
分支。但它不仅仅是一个分支,因为它没有意图与主要的Kubernetes
代码库相同。支持单个Kubernetes
组件的相同代码在k3s
中与在成熟的Cloud Native Computing Foundation
托管的Kubernetes
项目(K8s
)中相同。取而代之的是,k3s
的不同之处在于它将软件打包为容器的方式。
支持k3s
的三种哲学是:
这三个理念共同作用:通过最有效的集群组件管理,Rancher
可以制造出最轻便,最节省资源的产品,同时确保其组成的组件与Kubernetes
主项目完全兼容。
Rancher Labs的k3s架构
因此,与最初的Kubernetes
项目相比,k3s
在实现目标和理念上有所不同。最主要的区别是:
Kubernetes
控制平面组件都组合成一个二进制文件ARM
提供交叉编译in-tree
云服务商删除插件iptables、du、find
等CoreDNS、Metrics
服务器和Ingress
控制器KINE
可以在您选择的数据库而不仅仅是在etcd
上管理键值存储考虑到与In-tree Kubernetes
的区别,你可能会认为k3s
是一个完全不同的产品,实际上它由许多上游Kubernetes
难以维护的代码组成;k3s
部分总共只有1000
行代码!
由Markus Spiske发表于Unsplash
这在很大程度上归功于Rancher
和更广泛的社区中一些非常聪明的k3s
开发人员,也归因于项目的自然融合。实际上,k3s
代码已合并到上游Kubernetes
代码库中,从而使项目紧密耦合。
为了简化集群设置并允许您转到在Kubernetes
中实际部署应用程序的部分,k3s
还负责证书的生成和轮换。这可以自动在群集中的节点之间进行TLS
加密,这对您来说就不那么麻烦了。
在Civo
,我们显然相信Kubernetes
是部署和管理云计算工作负载的未来解决方案。就像容器范式改变了我们对代码部署的理解,保证各个环境一致性,当然Kubernetes
也改变了在现实世界中管理这些容器的思路。
为此,我们相信易部署且高效的Kubernetes
服务的价值,该服务可满足各种用例。无论您是想了解容器编排、测试新应用程序、为项目部署CI/CD
管道还是为高可用性顺利扩展应用程序,都不必担心底层的本质,除非您愿意深入研究。
通过利用k3s
的效率,Civo Kubernetes
平台实现了对开发人员都重要的两件事:部署速度和资源节约。
k3s
安装包括用户工具,Ingress
控制器和现成的指标,这意味着您可以快速启动并运行应用程序。当然,与基本的Kubernetes
完全兼容意味着,如果您希望将自己的组件应用于您的集群,则可以自由地这样做-包含自定义的Helm chart
! 在CNCF
的世界中,如果不是数千个应用程序,那么在默认情况下,将一个经过验证的应用程序捆绑在一起是一个优势。
k3s
较低的系统资源要求为我们提供了另一个速度优势。这意味着它不仅包括开始使用集群所需的一切,而且还可以快速部署。我们通常会在两分钟左右的时间内看到新配置服务的启动,并且进行后端服务升级,目的是进一步加快升级部署速度。
k3s
所讲的资源经济性是这样的,你可以在边缘设备上运行它,如果你愿意的话,在基于云服务的情况下,只需要一个节点。在k3s
系统中,主节点不仅仅参与工作,而且充当控制平面。这实际上为您节省了成本,因为主节点的计算能力将得到最有效的利用。