9个值得考虑的开源云原生项目 (值得考虑的)

9个值得考虑的开源云原生项目 (值得考虑的)

随着使用容器开发应用程序变得越来越流行,云原生应用程序也开始普及起来。根据其定义:

上述描述包括了云原生应用程序中四个不可或缺的要素:

尽管这些技术有着截然不同的历史,但它们相辅相成,并且在很短的时间内催生了云原生应用程序及其工具集的指数性增长。这张云原生计算基金会(cloud native Computing Foundation,CNCF)的信息图展示了当今云原生应用程序生态的规模和范围。

云原生计算基金会项目

这张图片只是一个开始。正如 node.js 的发明引发了无数 JavaScript 工具的爆炸式增长一样,容器技术的流行也开启了云原生应用程序的指数增长。

好消息是已经有几个组织开始监督这些项目并将它们连接起来。一个是开放容器计划(Open Containers Initiative,OCI),这是一个轻量级、开放的治理结构(或项目),在 Linux 基金会的支持下产生,其明确的目的就是围绕容器格式和运行时创建开放的行业标准。另一个是 CNCF,一个致力于云计算普及化和可持续化的开源软件组织。

除了围绕云原生应用程序构建社区以外,CNCF 还帮助项目建立了治理结构。CNCF 提出了成熟度级别的概念:沙箱、孵化和毕业。这些级别分别对应下图中的创新者、早期采用者和早期大众。

CNCF 项目成熟等级

CNCF 对每个成熟等级都有详细的标准(为方便读者,我们将在下面详细讲解)。一个正在孵化或毕业的项目需要技术监督委员会(TOC)三分之二的投票。

沙箱阶段

孵化阶段

毕业阶段

值得考虑的九个项目

虽然不可能涵盖上图中所有的 CNCF 项目,但我将介绍九个最有趣的开源项目,这些项目有的已经毕业,有的仍在孵化阶段。

名称 描述
Kubernetes 容器编排平台
Prometheus 系统及服务监控工具
边缘和服务代理
Pod原生容器引擎
分布式追踪系统
透明式服务网格
Kubernetes软件包管理工具
分布式键值存储
针对Kubernetes的轻量运行时

读者可通过该视频教程来详细浏览这些项目。

毕业项目

毕业项目被认为是成熟的(已经被许多组织采用)并且必须遵守 CNCF 的指导方针。以下是三个最受欢迎的开源 CNCF 毕业项目。请注意,其中一些描述直接摘自项目网站或稍作编辑。

Kubernetes

在谈论云原生应用程序的时候怎么能忘记 Kubernetes?由 Google 发明的 Kubernetes 无疑是最著名的容器编排平台,它也是一个开源工具。

什么是容器编排平台?基本上,一个容器引擎本身可以用来管理几个容器。然而,当面对数以千计的容器和数以百计的服务时,管理这些容器就变得超级复杂。这时候容器引擎就有了用武之地。容器编排引擎通过自动化容器的部署、管理、网络和可用性来帮助扩展容器。

Docker Swarm 和 Mesosphere Marathon 是其它两个容器编排引擎,但可以肯定地说,Kubernetes 成为了赢家(至少目前是这样)。Kubernetes 也催生了像这样的容器即服务平台(Container-as-a-Service,CaaS)。OKD 是 Kubernetes 的 Origin 社区发行版,并提供对RedHat OpenShift的支持。

想要入门,请访问 Kubernetes 的GitHub代码库,并从Kubernetes文档页面访问其文档和学习资源。

Prometheus

Prometheus 是 SoundCloud 在 2012 年开发的一个开源系统监控和警报工具包。从那时起,许多公司和组织就采用了 Prometheus。该项目有一个非常活跃的开发者和用户社区,它现在是一个独立的开源项目,独立于公司之外由社区进行维护。

Prometheus 的架构

理解 Prometheus 最简单的方法就是把它想象成一个每年 365 天,每天 24 小时都在运转的生产系统。没有哪个系统是完美的,有技术可以减少故障(称为容错系统)。然而,如果发生问题,最重要的事情是尽快定位问题。这时候,类似 Prometheus 这样的监控工具就可以派上用场了。

Prometheus 不仅仅是一个容器监控工具,它在云原生应用程序公司中也非常受欢迎。此外,包括在内的其他开源监控工具也都使用 Prometheus。

入门 Prometheus 最好的方法就是查看它的GitHub库。在本地运行 Prometheus 很容易,但是你需要安装一个容器引擎。Prometheus的网站上有关于这方面的详细文档。

Envoy(或 Envoy Proxy)是一个为云原生应用程序设计的开源边缘和服务代理。它由 Lyft 创建,是一个专门为单一服务和应用程序设计的高性能 C++分布式代理,还是一个专为大型微服务网状架构设计的通信总线和通用数据平面。Envovy 基于对 Nginx、HAProxy、硬件负载平衡器和云负载平衡器等解决方案的学习,与每个应用程序一起运行,通过以一种与平台无关的方式提供通用功能来实现网络抽象。

当基础设施中所有的服务流量流经 Envoy 网格时,可以很容易地在一个地方通过一致的可观察性来图形化问题区域、调整总体性能以及添加底层功能。基本上,Envoy Proxy 是一种服务网格工具,可以帮助组织为生产环境构建容错系统。

服务网格应用程序有很多替代品,比如 Uber 的(下面讨论)和。Istio 通过部署为并利用配置模型来扩展 Envoy Proxy。值得注意的特点有:

想要理解 Envoy、证明它的能力并实现其全部优点,需要在运行生产级环境方面具有丰富的经验。更多详细内容可以参阅文档,也可以访问它的GitHub代码库。

孵化项目

以下是六个最受欢迎的开源 CNCF 孵化项目。

Rkt 的发音是”rocket(火箭)”,它是一个 pod 原生容器引擎。它有一个在 Linux 上运行容器的命令行界面(CLI)。在某种意义上,它同其它容器类似,如、Docker 和 CRI-O。

Rkt 最初由 CoreOS 开发(后来被 RedHat 收购),你可以在官网上找到详细的文档,也可以在上访问源代码。

Jaeger 是一个面向云原生应用程序的开源端到端分布式跟踪系统。在某种程度上,它是一个像 Prometheus 一样的监控解决方案。但是它又是不同的,因为它的使用场景可以扩展到:

Jaeger 是一项由 Uber 开发的开源技术。你可以在官网上找到详细的文档,也可以在上找到源代码。

就像 Lyft 的 Envoy Proxy 一样,Uber 开发了开源解决方案 Linkerd 来维持它的产品级服务。在某些方面,Linkerd 就像是 Envoy,因为它们都是服务网格工具,旨在提供平台范围内的可观察性、可靠性和安全性,而不需要配置或代码更改。

然而,两者之间存在一些细微的差别。虽然 Envoy 和 Linkerd 同时充当代理,可以报告已连接的服务,但 Envoy 并不像 Linkerd 那样被设计成 Kubernetes Ingress 控制器。Linkerd 的显著特点包括:

你可以在官网上阅读更多相关信息,也可以在上直接访问源代码。

Helm 基本上是 Kubernetes 的包管理器。如果你以前使用过 Apache Maven、Maven Nexus 或者类似的服务,你就会很清楚 Helm 的用途。Helm 帮助你管理 Kubernetes 应用程序。它使用“Helm Charts”来定义、安装和升级即便是非常复杂的 Kubernetes 应用程序。Helm 并不是管理包的唯一方法;另一个流行的概念是Kubernetes Operators,Red Hat OpenShift 4 正是使用这个概念。

你可以按照 Helm 文档的快速指南或者GitHub入门来试用 Helm。

Etcd 是可靠的分布式键值存储项目,可用于存储分布式系统中最关键的数据。它的主要特点如下:

Etcd 被用作 Kubernetes 和其它许多技术的默认内置数据存储。也就是说,它很少独立运行或作为一个单独的服务运行;相反,它利用了集成到 Kubernetes 和 OKD/OpenShift 的服务或其它服务。还有一个Etcd Operators来管理它的生命周期并解锁其 API 管理功能。

你可以通过 Etcd文档了解更多信息,并在上访问其源代码。

CRI-O 是一个遵守开放容器倡议(OCI)的 Kubernetes 运行时接口实现。CRI-O 的功能包括:

CRI-O 提供了大量的文档,包括指南、教程、文章甚至播客,你还可以访问它的页面。

原文地址:

声明:本文来自用户分享和网络收集,仅供学习与参考,测试请备份。