CNCF云原生

云原生计算基金会(CNCF)Cloud Native Computing Foundation是Linux基金会旗下的非盈利组织,来推动云原生计算的发展,帮助云原生技术开发人员来构建出色的产品。

CNCF的成立与一个重要项目密切相关,那就是Kubernetes。K8s最早是谷歌的内部容器编排项目Borg,为了推进其发展,谷歌决定将其开源,于是跟Linux基金会在2015年一起创办了CNCF。

Cloud Native Landscape

https://landscape.cncf.io/card-mode

接下来,就让我们一起看看这些毕业项目在开源世界的影响力,以及它们脱胎于哪里?

Kubernetes

Kubernetes,大家再熟悉不过了,它是CNCF的第一个项目,作为开源容器编排系统,主要应用与自动化容器化应用程序的部署、扩展和管理。它已经是事实上的容器编排标准。

Kubernetes脱胎于谷歌,“青出于蓝而胜于蓝”。如今它已经演进到v1.18版本。不论是在企业的本地环境,还是云环境中,Kubernetes都被供应商和企业广泛采用。在Github上,Kubernetes拥有超过65万的star,可见其强大的开源影响力。

Prometheus

Prometheus是第二个加入CNCF的托管项目。它脱胎于SoundCloud,是一套开源系统监控&报警&时间序列数据库工具包。Prometheus在2016年成为了CNCF的托管项目,于2018年8月毕业。

Envoy

Envoy是一种被广泛采用的开源网络代理,被设计为云原生应用程序的第7层边缘和服务代理。它脱胎于Lyft,Lyft是美国第二大网约车公司。Envoy在2017年成为CNCF的托管项目,于2018年11月毕业。

从孵化到毕业,Envoy是CNCF增长最快的项目之一,其增速一直排在前三。Envoy深得大型科技公司和开源组织的青睐,目前有170多家公司为其贡献代码,其中不乏亚马逊、阿里巴巴、谷歌、IBM、VMware这样科技领头羊,包括Apache和OpenStack两大基金会也为其贡献代码。目前,Envoy已经演进到了1.14.1版本,GitHub拥有超过近13万的star。

CoreDNS

CoreDNS是DNS服务器解决方案,它既能作为独立的DNS服务器,也作为Kubernetes的默认向前的DNS服务器。它最早由前谷歌的可靠性工程师Miek Gieben创建,在2017年由CNCF托管成为孵化项目,于2019年初成为了毕业项目。

从孵化到毕业,CoreDNS只用了一年时间,而且它替代了Kubernetes原来的DNS服务器kube-dns,凭借稳定性和安全性成为了Kubernetes的核心组件。目前CoreDNS的最新版本是1.6.9,Github拥有6000个star。

Containerd

Containerd诞生在Docker,Docker的名头不用多说了。最初Containerd是Docker引擎的底层运行时(runtime)管理器。在2017年成为CNCF托管项目,2019年从CNCF毕业。目前,Containerd作为业界标准的容器运行时被广泛采用。

Fluentd

Fluentd是用于统一日志记录层的数据收集器,它会将数据源与后端系统分离。Fluentd的最大用户使用它从50000台服务器中收集日志数据。它的创建历史也比较久,2011年由Sadayuki Furuhashi创建。在2016年成为CNCF托管项目,于2019年4月从CNCF毕业,它是10个毕业项目中,孵化时间最长的。

Fluentd在加入CNCF之前,就已然名声在外。它拥有广泛的插件连接到不同的数据源中,有5000多家由数据驱动的企业使用Fluentd来收集数据。加入CNCF后,为其提供代码贡献的公司就超过1000多家。当前的版本是v1.0,目前在Github拥有超过9000个star。

Jaeger

Jaeger作为端到端的分布式跟踪平台,帮助企业监控云原生架构并进行故障排除。它诞生于Uber,在2017年成为CNCF的托管项目,于2019年10月从CNCF毕业。

Jaeger能够有效帮助企业确定系统运行缓慢和性能下降的情况,被广泛集成在企业的微服务架构中。它的最新版本是1.17.1,目前在Github拥有超过1万个star。

Vitess

Vitess是用于MySQL水平扩展的数据库集群系统。Vitess在2010年诞生于Youtube,一直是其数据库基础架构的核心组件。它在2018年成为CNCF的托管项目,与2019年11月从CNCF毕业。

Vitess最大优势在于可降低企业使用MySQL成为云原生企业进入的门槛。Vitess现在支持MySQL,Percona和MariaDB数据库。Kubernetes发布1.0后,它一直为Kubernetes提供支持,现在也与etcd,gRPC和Prometheus等许多其他云原生项目集成。最新版本是Vitess 6,目前在Github拥有超过9900个star。

TUF(The Update Framework)

TUF是用于保护软件更新系统的开源技术,提供了一个灵活的框架和规范。它由纽约大学丹顿工程学院计算机科学与工程副教授Justin Cappos于2009年首先开发了该项目。在2017年,TUF成为CNCF的托管项目,在2019年底从CNCF毕业。

TUF的特别之处在于,它的是第一个源于学术机构并从CNCF毕业的项目;而且Cappos与来自密歇根大学交通研究所和西南研究所的研究团队一起开发了TUF的汽车应用Uptane,Uptane已经被汽车制造商所广泛使用。目前,TUF已成为保护软件更新系统安全的行业标准,不少领先的云原生公司已采用TUF。

Helm

Helm是Kubernetes的包管理器,可帮助企业管理Kubernetes的应用,如定义、安全和升级等。Helm使用charts的打包格式来描述一组相关的Kubernetes资源的文件的集合。Helm于2015年在Deis创立,后来被微软收购。在2018年,Helm成为了CNCF的托管项目,于2020年4月30日从CNCF毕业。

Helm在云原生领域已经拥有广泛的影响力,Helm charts每月的下载量十分惊人。目前,Helm 3进一步降低了Kubernetes中安装和管理软件的准入门槛,使其更加受欢迎。目前在Github拥有超过3万个star。

TiKV

TiKV 是一个开源的分布式事务 Key-Value 数据库,专注为下一代数据库提供可靠、高质量、实用的存储架构。最初由 PingCAP 团队在 2016 年 1 月作为 TiDB 的底层存储引擎设计并开发,第一版于 2016 年 4 月开源。2018 年 8 月被 CNCF 宣布接纳为沙箱云原生项目,在 2019 年 5 月从沙箱晋级至孵化项目。目前,TiKV 已经在知乎、一点资讯、Shopee、美团、京东云、转转等多行业头部企业得到上线应用。

TiKV 通过 Raft 一致性算法来实现数据多副本之间的一致性,本地采用了 RocksDB 存储引擎存储数据,同时 TiKV 支持数据自动切分和迁移。TiKV 的跨行事务最初参考 Google Percolator 事务模型,并进行了一些优化,提供快照隔离与带锁快照隔离,支持分布式事务。TiKV 的核心特性如下:

Harbor

Harbor,是一个英文单词,意思是港湾,港湾是干什么的呢,就是停放货物的,而货物呢,是装在集装箱中的,说到集装箱,就不得不提到Docker容器,因为docker容器的技术正是借鉴了集装箱的原理。所以,Harbor正是一个用于存储Docker镜像的企业级Registry服务。

Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署我们私有环境内的Registry也是非常必要的。Harbor是由VMware公司开源的企业级的Docker Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能。

etcd

etcd 是一套面向分布式系统内关键数据的分布式、高可靠性键值存储方案,其特点包括:

  • 简单:提供定义明确、面向用户的 API(gRPC)。
  • 安全:自动 TLS 配合可选客户端证书验证。
  • 快速:基准性能为每秒 10000 次写入。
  • 可靠:使用 Raft 保证正确分发。

Linkerd

Linkerd 是一个提供弹性云端原生应用服务网格的开源项目。其核心是一个透明代理,可以用它来实现一个专用的基础设施层以提供服务间的通信,进而为软件应用提供服务发现、路由、错误处理以及服务可见性等功能,而无需侵入应用内部本身的实现。

OPA(Open Policy Agent)

Open Policy Agent简介| Just For Coding

在应用开发中,应用程序往往需要跟据特定策略的决策结果来判断后续执行何种操作。比如,权限校验就是策略决策的一种典型场景,它需要判断哪些用户对哪些资源能够执行哪些操作。这些策略可能随着时间需要不断的动态更新。当前策略决策的逻辑往往硬编码实现在软件的业务逻辑中,当需要更新策略规则集时,还需要修改应用代码、重新部署应用,非常不灵活。同时,不同的应用服务也都需要重复实现类似的功能,因而策略决策逻辑非常适合做为独立的模块从业务逻辑中抽离出来。

Open Policy Agent ,官方简称OPA, 为这类策略决策需求提供了一个统一的框架与服务。它将策略决策从软件业务逻辑中解耦剥离,将策略定义、决策过程抽象为通用模型,实现为一个通用策略引擎,可适用于广泛的业务场景,比如:

  • 判断某用户可以访问哪些资源
  • 允许哪些子网对外访问
  • 工作负载应该部署在哪个集群
  • 二进制物料可以从哪些仓库下载
  • 容器能执行哪些操作系统功能
  • 系统能在什么时间被访问

需要注意的是,OPA本身是将策略决策和策略施行解耦,OPA负责相应策略规则的评估,即决策过程,业务应用服务需要根据相应的策略评估结果执行后续操作,策略的施行是业务强相关,仍旧由业务应用来实现。

Rook

Rook 是一款云原生环境下的开源分布式存储编排系统。

Rook将分布式存储软件转变为自我管理,自我缩放和自我修复的存储服务。它通过自动化部署,引导、配置、供应、扩展、升级、迁移、灾难恢复、监控和资源管理来实现。 Rook使用基础的云原生容器管理、调度和编排平台提供的功能来履行其职责。

Rook利用扩展点深入融入云原生环境,为调度、生命周期管理、资源管理、安全性、监控和用户体验提供无缝体验。

Rook现在处于alpha状态,并且最初专注于在Kubernetes之上运行Ceph。Ceph是一个分布式存储系统,提供文件、数据块和对象存储,可以部署在大型生产集群中。Rook计划在未来的版本中增加对除Ceph之外的其他存储系统以及Kubernetes之外的其他云原生环境的支持。



CNCF

4177 字

2021-11-10 20:55 +0800