“AI 技术+人才”如何成为企业增长新引擎?戳此了解>>> 了解详情
写点什么

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

  • 2019-09-06
  • 本文字数:4345 字

    阅读完需:约 14 分钟

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

随着使用容器开发应用程序变得越来越流行,云原生应用程序也开始普及起来。本文作者对云原生技术展开了深入分析,并对云原生项目的生命周期进行了简要说明,最后介绍了 9 个值得考虑的开源云原生项目。


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


云原生技术用于开发一类特别的应用程序,这类应用程序通过容器中的服务构建,然后按照微服务的形式部署,并通过 DevOps 敏捷流程以及可持续交付工作流在弹性基础设施上进行管理。


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


  1. 容器化

  2. 微服务

  3. DevOps

  4. 持续集成和交付(CI/CD)


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



云原生计算基金会项目


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


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


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



CNCF 项目成熟等级


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

沙箱阶段

要想进入沙箱阶段,一个项目必须至少有两个 TOC 赞助人。详细过程请参阅 CNCF 沙箱指南 1.0 版本。

孵化阶段

注意:我们期望从孵化阶段开始对项目进行全面的尽职调查。

要进入孵化阶段,项目首先必须满足沙箱阶段的要求,此外:

记录至少有三个独立的最终用户在生产中成功使用了该项目,并且技术委员会认定其具有足够的质量和范围。

有一定数量的提交者。提交者的定义是具有提交权限的人,即可以对项目部分或整体接收贡献的人。

展示项目的提交和合并贡献持续稳定增长。

由于这些度量标准可能因为项目的类型、范围和大小而有很大的差异,因此对于项目是否满足这些标准,TOC 具有最终决定权。

毕业阶段

要从沙箱或孵化阶段毕业,或者要加入一个新项目作为毕业项目,该项目必须满足孵化阶段的所有标准,另外还要加上:

至少有来自两个组织的提交者。

实现并维护了核心基础设施倡议的最佳实践徽章。

已经完成了一个独立的第三方安全审计,公布结果的范围和质量类似于下面的例子(包括关键漏洞的修复):https://github.com/envoyproxy/envoy#security-audit,所有的关键漏洞都需要在毕业前得到修复。

采用 CNCF 行为守则。

明确定义项目治理和提交者流程。这最好放在一个 goverance.md 文件中,并引用一个 OWNERS.md 文件来显示当前提交者和历史提交者。

至少在主要仓库提供一个项目采用者的公开列表(例如,项目网站上的 ADOPTERS.md 或公司徽标)。

获得技术选择委员会的绝对多数选票进入毕业阶段。如果项目能够证明足够成熟,它们可以尝试直接从沙箱移动到毕业。项目可以无限期地保持孵化状态,但通常预计会在两年内毕业。

值得考虑的九个项目

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


名称License描述
KubernetesApache2.0容器编排平台
PrometheusApache2.0系统及服务监控工具
EnvoyApache2.0边缘和服务代理
rktApache2.0Pod原生容器引擎
JaegerApache2.0分布式追踪系统
LinkerdApache2.0透明式服务网格
HelmApache2.0Kubernetes软件包管理工具
EtcdApache2.0分布式键值存储
CRI-OApache2.0针对Kubernetes的轻量运行时


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

毕业项目

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

Kubernetes

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


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


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


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

Prometheus

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



Prometheus 的架构


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


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


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

Envoy

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


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


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


  • 包括所有的基本功能(例如同 Istio 控制平面配对时)

  • 工作负载低,在规模化扩展时将近百分之九十九的延迟处于负载不足

  • 核心层作为 L3/L4 过滤器,提供了许多 L7 过滤器

  • 支持 gRPC 和 HTTP/2(上游/下游)

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

  • 侧重于度量的收集、跟踪和整体可观察性


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

孵化项目

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

Rkt

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


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

Jaeger

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


  • 分布式事务监控

  • 性能和延迟优化

  • 根本原因分析

  • 服务依赖项分析

  • 分布式上下文传播


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

Linkerd

就像 Lyft 的 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 通信


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

Helm

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


你可以按照 Helm 文档的快速指南或者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页面。


原文地址:https://opensource.com/article/19/8/cloud-native-projects


2019-09-06 10:3510539
用户头像

发布了 36 篇内容, 共 18.8 次阅读, 收获喜欢 55 次。

关注

评论 1 条评论

发布
用户头像
CNCF 宣布归档(关停)rkt 项目。
2019-09-08 18:03
回复
没有更多了
发现更多内容

分享几个索引创建的小 Tips

江南一点雨

MySQL

全国信安标委“标准周”在昆明召开,腾讯安全受邀分享标准实践经验

说山水

2个场景实例讲解GaussDB(DWS)基表统计信息估算不准的处理方案

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 6 月 PK 榜

中移链资源管理介绍

BSN研习社

浅谈EOS区块链性能测试

BSN研习社

GreptimeDB 设计原则 — 云原生时序数据库,解决海量数据管理挑战

Greptime 格睿科技

数据库 分布式数据库 时序数据库 云原生数据库

强化学习基础篇[2]:SARSA、Q-learning算法简介、应用举例、优缺点

汀丶人工智能

人工智能 深度学习 强化学习

圣邦股份:品类持续深挖,高端加速推进,模拟龙头稳健发展

华秋电子

堡垒机重要吗?为什么?求解!

行云管家

堡垒机 安全运维 录像审计

Amazon CodeWhisperer 初体验

Coder9527

通过FP&A实践,释放企业深度价值

智达方通

全面预算管理 财务规划和分析 FP&A

TiDB 落地SAS机器实践

TiDB 社区干货传送门

实践案例 应用适配 HTAP 场景实践

含有CPU芯片的PCB设计需要考虑的五个主要方面

华秋电子

一文读懂责任分配矩阵,解决你80%的项目难题

敏捷开发

项目管理 Scrum 敏捷开发 责任分配矩阵 RACI矩阵

数字赋农:数字农业新时代,致富之路宽又阔!

加入高科技仿生人

低代码 智慧农业 数字赋能 科技兴农

rocketmq4 docker安装 阿里云linux2(centos7)

folo

Docker centos RocketMQ部署

TiDB集群数据库灾难恢复手册

TiDB 社区干货传送门

管理与运维 备份 & 恢复

我又和redis超时杠上了

蓝胖子的编程梦

redis 性能分析 云服务器 线上事故 接口超时

行云堡垒V7亮点有哪些?具体看这里!

行云管家

IT运维 行云堡垒

手把手实践丨基于STM32+华为云设计的智慧烟感系统

华为云开发者联盟

云计算 华为云 华为云开发者联盟 企业号 6 月 PK 榜

亿级大表毫秒关联,荔枝微课基于腾讯云数据仓库Doris的统一实时数仓建设实践

科技热闻

【5.26-6.02】写作社区优秀技术博文一览

InfoQ写作社区官方

热门活动 优质创作周报

简洁实用的文本编辑器:FSNotes中文版

真大的脸盆

Mac Mac 软件 文本编辑器 文本管理 文本处理工具

单点登录的三种实现方式

Authing

SSO 单点登录

执行计划缓存,Prepared Statement性能跃升的秘密

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 6 月 PK 榜

TiDB数据迁移实践DM工具

TiDB 社区干货传送门

迁移 实践案例

人工智能工程总体介绍

紫晖

人工智能 软件工程 数据开发

数据隐私为先:EMQX Cloud BYOC 架构解析

EMQ映云科技

物联网 云服务 mqtt

软件测试/测试开发丨Pytest测试框架学习笔记

测试人

程序员 软件测试 pytest

魔法门之英雄无敌3下载,死亡阴影 for Mac中文版

魔仙苹果mac堡

mac游戏 英雄无敌3 英雄无敌3高清中文版 魔法门之英雄无敌3下载 死亡阴影中文版

强化学习基础篇【1】:基础知识点、马尔科夫决策过程、蒙特卡洛策略梯度定理、REINFORCE 算法

汀丶人工智能

人工智能 深度学习 强化学习

9个值得考虑的开源云原生项目_文化 & 方法_Bryant Son_InfoQ精选文章