9个一定要关注的开源云原生项目

随着使用容器开发应用的最佳实践越来越受欢迎,云原生应用也在不断增加。根据定义:“云原生技术用于开发使用打包在容器中的服务构建的应用,部署为微服务,并通过敏捷的DevOps流程和持续交付工作流程在弹性基础架构上进行管理。”

定义描述包括四个与云原生应用程序不可分割的元素:容器、微服务、DevOps和持续集成和持续交付(CI/CD)。

虽然这些技术具有非常独特的历史,但它们相互补充,并在短时间内导致云原生应用和工具集的指数增长。Cloud Native Computing Foundation(CNCF)提供的信息图显示了目前云原生应用生态系统的大小和广度。

而这只是一个开始。正如Node.JS引发了无数JavaScript工具的爆炸式增长,容器技术的普及掀开了云原生应用的指数级增长。

同时,有几个组织负责监督和连接这些项目。一个是开放式容器计划(OCI),它是一个轻量级的开放式治理结构,它在Linux基金会的支持下成立,旨在创建围绕容器格式和运行时的开放行业标准。另一个是CNCF,它致力于使云原生计算具有普遍性和可持续性的开源软件基金会。

除了围绕云原生应用程序构建社区之外,CNCF还帮助项目围绕其原生云应用建立结构化治理。CNCF创建了成熟度级别的概念:沙盒,孵化或分级——对应于下图中的创新者,早期采用者和早期多数层。

虽然无法触及所有CNCF项目,但以下9个毕业和孵化开源项目,建议大家抽时间去看看!

Kubernetes容器的编排平台(已毕业项目)

Kubernetes的名头不用多说了。避开Kubernetes无法讨论云原生应用?它由谷歌发明,Kubernetes无疑是最著名的基于容器应用的容器编排平台,它也是一个开源工具。

什么是容器编排平台?基本上,容器引擎本身可以用于管理几个容器。但是,当你谈论数千个容器和数百个服务时,管理这些容器变得非常复杂。这就是容器引擎的用武之地。容器编排引擎通过自动化容器的部署,管理,网络和可用性来帮助扩展容器。

Docker Swarm和Mesosphere Marathon是其他容器编排引擎,但可以肯定地说Kubernetes目前为止是最成功的。Kubernetes还诞生了像OKD这样的容器即服务(CaaS)平台,这是Kubernetes的Origin社区发行版,为红帽OpenShift提供支持。当然Kubernetes在公有云也大放异彩,目前主流的云供应商都提供支持Kubernetes的云服务。

Prometheus:系统和服务监控工具(已毕业项目)

Prometheus(普罗米修斯)是2012年在SoundCloud上构建的开源系统监控和警报工具包。从那时起,许多公司和组织都采用了Prometheus,该项目拥有一个非常活跃的开发人员和用户社区。它现在是一个独立于公司的开源项目。

认识普罗米修斯的最简单方法是想象一个生产系统,该系统需要一天24小时,一年365天运转。没有一个系统是完美的,并且有减少故障的技术(称为容错系统)。但是,如果出现问题,最重要的是尽快识别它。这就是像普罗米修斯这样的监控工具派上用场的地方。Prometheus不仅仅是一个容器监控工具,而且在云原生应用公司中最受欢迎。此外,其他开源监控工具,包括Grafana,但也会利用Prometheus。

Envoy:边缘和服务代理(已毕业项目)

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

当基础设施中的所有服务流量流经Envoy网格时,通过一致的可观察性,调整整体性能以及在单个位置添加基板功能,可以轻松地显示问题区域。基本上,Envoy Proxy是一种服务网格工具,可帮助组织为生产环境构建容错系统。

服务网格应用有很多替代方案,例如Uber的Linkerd(下面讨论)和Istio。Istio通过部署Sidecar并利用Mixer配置模型扩展了Envoy Proxy 。值得注意的特殊功能是:

包括所有“table stakes”功能(当与控制平面配对时,如Istio)

在负载下运行时,大小为99%的延迟

作为L3/L4滤波器的核心,提供了许多开箱即用的L7滤波器

支持gRPC和HTTP/2(upstream/downstream)

它由API驱动,支持动态配置和热重载

重点关注度量标准收集,跟踪和整体可观察性

rkt:Pod本机容器引擎(孵化项目)

rkt,发音为“rocket”,是一个pod-native容器引擎。它有一个命令行界面(CLI),用于在Linux上运行容器。从某种意义上说,它类似于其他容器,如Podman,Docker和CRI-O。rkt最初由CoreOS开发(后来被红帽收购)。

Jaeger:分布式跟踪系统(孵化项目)

Jaeger是一个用于云原生应用的开源,端到端分布式跟踪系统。Jaeger是Uber开发的一种开源技术。在某种程度上,它是像普罗米修斯这样的监控解决方案。但它有所不同,因为它的用例扩展到:

分布式事务监控

性能和延迟优化

根本原因分析

服务依赖性分析

分布式上下文传播

Linkerd:透明服务网格(孵化项目)

与使用Envoy Proxy一样,Uber开发了Linkerd作为开源解决方案,以维持其在生产级别的服务。在某些方面,Linkerd就像Envoy一样,因为它们都是服务网格工具,旨在提供平台范围的可观察性,可靠性和安全性,而无需配置或代码更改。

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

支持多种平台(Docker,Kubernetes,DC/OS,Amazon ECS或任何独立机器)

内置的服务发现抽象,以统一多个系统

支持gRPC,HTTP/2和HTTP/1.x请求以及所有TCP流量

Helm:Kubernetes包管理(孵化项目)

Helm基本上是Kubernetes的包管理器。如果你使用过Apache Maven,Maven Nexus或类似的服务,你将了解Helm的目的。Helm可帮助管理Kubernetes应用。它使用“Helm Charts”来定义,安装和升级最复杂的Kubernetes应用。Helm不是唯一的方法; 另一个受欢迎的概念是Kubernetes Operators,它用于红帽OpenShift 4。

Etcd:分布式键值存储(孵化项目)

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

定义明确,面向用户的API(gRPC)

具有可选客户端证书身份验证的自动TLS

速度(以每秒10000次写入为基准)

可靠性(使用Raft分配)

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

CRI-O:Kubernetes的轻量级运行时(孵化项目)

CRI-O是一个开放容器倡议(OCI) - 兼容Kubernetes运行时接口的实现。CRI-O用于各种功能,包括:

运行时使用runc(或任何OCI运行时规范实现)和OCI运行时工具

使用容器/镜像的镜像管理

使用容器/存储来存储和管理镜像层

通过Container Network Interface(CNI)提供网络支持

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190821A0HQ8D00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券