【51CTO.com快译】本文介绍CNCF九个值得关注的毕业和孵化开源项目。
毕业的项目
毕业的项目被认为很成熟——且被许多组织采用,须遵守CNCF的指导方针。下面是三个受欢迎的开源CNCF毕业项目。
Kubernetes
谈论云原生应用程序不得不提Kubernetes。Kubernetes由谷歌发明,无疑是著名的容器编排平台,面向基于容器的应用程序,它也是一个开源工具。
什么是容器编排平台?基本上,容器引擎本身可用于管理几个容器。然而,面对数千个容器和数百个服务时,管理这些容器变得异常复杂。这时候容器引擎有了用武之地。容器编排引擎通过使容器的部署、管理、网络和可用性实现自动化来帮助扩展容器。
Docker Swarm和Mesosphere Marathon是另外的容器编排引擎,但可以肯定地说Kubernetes成为了赢家(至少目前如此)。 Kubernetes还催生了OKD之类的容器即服务(CaaS)平台,OKD是Kubernetes的Origin社区发行版,为Red Hat OpenShift提供支持。
想开始入手,请访问Kubernetes GitHub代码库,并从Kubernetes文档页面访问其文档和学习资源。
Prometheus
Prometheus是2012年在SoundCloud构建的开源系统监控和警报工具包。从那时起,许多公司和组织采用了Prometheus,该项目有一个很活跃的开发者和用户社区。它现在是一个独立于该公司来维护的独立开源项目。
想认识Prometheus,不妨想象需要每天24小时、每年365天正常运行的生产系统。没有哪个系统是完美的,有技术可减少故障(名为容错系统)。然而,如果出现问题,最重要的是尽快找到问题。这时候像Prometheus这样的监控工具派得上用场。Prometheus不仅仅是一个容器监控工具,它在云原生应用程序公司当中也极受欢迎。此外,包括Grafana在内的其他开源监控工具也使用Prometheus。
想开始入手Prometheus,推荐方法是查看其GitHub代码库。在本地运行Prometheus很容易,但您需要安装容器引擎。你可以在Prometheus网站上查看详细文档。
Envoy
Envoy(或Envoy Proxy)是一个为云原生应用程序设计的开源边缘和服务代理。Envoy创建于Lyft,是一种高性能C++分布式代理,专为单一服务和应用程序设计,还是一种为大型微服务服务网格架构设计的通信总线和通用数据平面。Envoy基于Nginx、HAProxy、硬件负载均衡系统和云负载均衡系统等解决方案的学习,与每个应用程序并行运行,通过以一种与平台无关的方式提供通用功能来抽象网络。
基础设施中的所有服务流量流经Envoy网格时,在一个地方通过一致的可观察性直观地显示问题区域、调整总体性能以及添加底层功能变得很容易。Envoy Proxy基本上是一种服务网格工具,可帮助组织为生产环境构建容错系统。
服务网格应用有很多替代方案,比如优步的Linkerd(下有讨论)和Istio。Istio通过部署为Sidecar并利用Mixer配置模型来扩展Envoy Proxy。Envoy值得注意的特点如下:
- 包括所有的“基本”功能(与Istio等控制平面结合使用时)
- 核心层面充当L3/L4过滤器,默认提供许多L7过滤器
- 支持gRPC和HTTP/2(上游/下游)
- 由API驱动,支持动态配置和热重载
- 侧重于度量标准收集、跟踪和总体可观察性
想了解Envoy、验证其功能并获得充分的好处,需要在运行生产级环境方面拥有丰富的经验。您可以访问GitHub代码库,从详细文档中了解更多信息。
孵化项目
以下是六个受欢迎的开源CNCF孵化项目。
rkt
rkt是一个pod原生容器引擎。它拥有用于在Linux上运行容器的命令行界面(CLI)。从某种意义上说,它类似其他容器,比如Podman、Docker和CRI-O。
rkt最初由CoreOS开发(后被Red Hat收购),您可以在官网上找到详细的文档,在GitHub上访问源代码。
Jaeger
Jaeger是一个面向云原生应用程序的开源端到端分布式跟踪系统。一方面,它与Prometheus一样是监控解决方案。不过它又不一样,因为其使用场景可扩大到:
- 分布式事务监控
- 性能和延迟优化
- 根本原因分析
- 服务依赖项分析
- 分布式上下文传播
Jaeger是优步开发的一种开源技术。您可以在官网上找到详细的文档,在GitHub上访问源代码(。
Linkerd
与Lyft开发Envoy Proxy一样,优步开发了Linkerd这个开源解决方案,以维护其生产级服务。在某些方面,Linkerd就像Envoy,因为两者都是服务网格工具,旨在提供整个平台的可观察性、可靠性和安全性,无需配置或代码更改。
然而两者存在一些细微差别。虽然Envoy和Linkerd充当代理,可以报告已连接的服务,但Envoy不像Linkerd那样旨在成为Kubernetes Ingress控制器。Linkerd的显著特点包括:
- 支持多种平台(Docker、Kubernetes、DC/OS、Amazon ECS或任何独立机器)
- 内置的服务发现抽象,以统一多个系统
- 支持gRPC、HTTP/2和HTTP/1.x请求以及所有TCP流量
您可以在Linkerd的网站上阅读更多相关信息,并在GitHub上访问源代码。
Helm
Helm基本上是Kubernetes的包管理器。如果您用过Apache Maven、Maven Nexus或类似的服务,就会了解Helm的用途。 Helm可帮助您管理Kubernetes应用程序。它使用“Helm Charts”来定义、安装和升级哪怕复杂的Kubernetes应用程序。Helm不是完成这项任务的唯一方法,另一个流行起来的概念是Kubernetes Operators,Red Hat OpenShift 4使用该概念。
您可以按照其文档中的快速入门指南或GitHub指南来试用Helm。
Etcd
Etcd是可靠的分布式键值存储项目,可用于存储分布式系统中关键的数据。其主要特点如下:
- 定义明确、面向用户的API(gRPC)
- 自动TLS,拥有可选的客户证书验证
- 速度快(每秒10000次写入)
- 可靠性(使用Raft来分发)
Etcd用作Kubernetes和其他许多技术的内置默认数据存储。话虽如此,它很少独立运行或作为单独的服务运行;相反,它使用集成到Kubernetes和OKD/OpenShift的服务或另外的服务。还有etcd Operators可用来管理生命周期并发掘其API管理功能。
您可以在etcd的文档中了解更多信息,在GitHub上访问源代码。
CRI-O
CRI-O在遵守开放容器倡议(OCI)的情况下实现了Kubernetes运行时接口。CRI-O用于各种功能,包括:
- 运行时环境使用runc(或任何OCI运行时规范实现)和OCI运行时工具
- 使用容器/映像的映像管理
- 使用容器/存储来存储和管理映像层
- 通过容器网络接口(CNI)提供网络支持
CRI-O提供了大量文档,包括指南、教程、文章甚至播客,您还可以访问其GitHub页面。
原文标题:9 open source cloud native projects to consider,作者:Bryant Son
【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】