这篇博客文章是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系统中,主节点不仅仅参与工作,而且充当控制平面。这实际上为您节省了成本,因为主节点的计算能力将得到最有效的利用。
Kubernetes入门培训(内含PPT)
从Ice到Kubernetes容器技术,微服务架构经历了什么?