CNCF项目简介
CNCF,全称Cloud Native Computing Foundation(云原生计算基金会),口号是 坚持和整合开源技术来编排容器作为微服务架构的一部分 ,其作为致力于云原生应用推广和普及的一支重要力量,不论您是云原生应用的开发者、管理者还是研究人员都有必要了解。
CNCF作为一个厂商中立的基金会,致力于Github上的快速成长的开源技术的推广,如Kubernetes、Prometheus、Envoy等,帮助开发人员更快更好的构建出色的产品。
下图是CNCF的全景图。
其中包含了CNCF中托管的项目,还有很多是非CNCF项目。
关于CNCF的使命与组织方式请参考 CNCF宪章 ,概括的讲CNCF的使命宝库以下三点:
- 容器化包装。
- 通过中心编排系统的动态资源管理。
- 面向微服务。
CNCF这个角色的作用是推广技术,形成社区,开源项目管理与推进生态系统健康发展。
另外CNCF组织由以下部分组成:
- 会员 :白金、金牌、银牌、最终用户、学术和非赢利成员,不同级别的会员在治理委员会中的投票权不同。
- 理事会 :负责事务管理
- TOC(技术监督委员会) :技术管理
- 最终用户社区 :推动CNCF技术的采纳并选举最终用户技术咨询委员会
- 最终用户技术咨询委员会 :为最终用户会议或向理事会提供咨询
- 营销委员会 :市场推广
CNCF项目成熟度分级与毕业条件
每个CNCF项目都需要有个成熟度等级,申请成为CNCF项目的时候需要确定项目的成熟度级别。
成熟度级别(Maturity Level)包括以下三种:
- inception(初级)
- incubating(孵化中)
- graduated(毕业)
是否可以成为CNCF项目需要通过Technical Oversight Committee (技术监督委员会)简称 TOC ,投票采取fallback策略,即 回退策略 ,先从最高级别(graduated)开始,如果2/3多数投票通过的话则确认为该级别,如果没通过的话,则进行下一低级别的投票,如果一直到inception级别都没得到2/3多数投票通过的话,则拒绝其进入CNCF项目。
当前所有的CNCF项目可以访问 https://www.cncf.io/projects/。
项目所达到相应成熟度需要满足的条件和投票机制见下图:
CNCF 有哪些具体的项目内容?
CNCF 包含的明星项目有 Kubernetes、Prometheus 和目前炙手可热的 gRPC
CNCF 计划为支持分布式、可扩展的应用需要的组件和组装方式提出一种规范,期望定义能够支持云原生应用和容器的整个基础设施堆栈。为了真正理解 CNCF 的既定目标,我们还需要了解它旗下的项目内容。
正如基金会目标中所描述的任务、角色以及价值观,基金会自创立以来名下已经管理了多个云端原生技术项目,包括:
– Kubernetes :集群中管理跨多台主机容器化应用的开源系统;
– Prometheus :专注于时间序列数据,为客户端依赖及第三方数据消费提供广泛集成支持的开源监控解决方案;
– OpenTracing:与厂商无关的分布式追踪开源标准;
– Fluentd:创建统一日志层的开源数据收集器。
另外,2017 开年以来基金会新接纳了五个项目:
– Linkerd:为微服务提供可靠性支持、自动化负载均衡、服务发现和运行时可恢复性的开源“服务网格”项目;
– gRPC:现代化高性能开源远程调用框架;
– CoreDNS:快速灵活的构建 DNS 服务器的方案;
– containerd:将容器运行时及其管理功能从 Docker Daemon 剥离的镜像管理和容器执行技术;
– rkt:帮助开发者打包应用和依赖包,简化搭环境等部署工作,提高容器安全性和易用性的容器引擎。
CNCF 包含的明星项目如此之多,其中广为人知的有 Kubernetes、Prometheus 和目前炙手可热的 gRPC。
1)Kubernetes
Kubernetes(经常被缩写成 k8s)前身是 Borg,是 Google 发起并维护的基于 Docker 的开源容器集群管理系统。它构建在 Docker 技术之上,为容器化的应用提供资源调度、部署运行、服务发现、扩容缩容等整一套功能,但它并非一个传统的 Paas,不限制应用运行环境,不区分应用和服务这两个概念,本质上可看作是基于容器技术的 mini-PaaS 平台,因为容器本身就是可移植的,所以 Kubernetes 容器集群也能跑在私有云、公有云或者混合云上面。Kubernetes 属于主从的分布式集群架构,包含 Master 和 Node:Master 作为控制节点,调度管理整个系统;Node 是运行节点,运行业务容器。
2)Prometheus
Prometheus 是一套开源的监控、报警和时间序列数据库的组合,成立于 2012 年,由 SoundCloud 公司开发,此后许多组织接受和采用了 Prometheus,遂将其独立为开源项目。该项目使用 Go 语言开发,社区氛围非常活跃。
截止今年 1 月,该项目已经拥有超过 200 个贡献者。作为一个可供现代平台选择的新兴监控工具,Prometheus 能够监控 Mesos、Docker、OpenStack 等等平台的应用程序。2016 年,Prometheus 加入了 CNCF 并成为了第二个托管项目,项目的创始人希望通过 CNCF,进一步推进 Prometheus 的推广和使用,并通过组织活动的方式让社区团结在一起。
3)gRPC
gRPC 是一个现代化高性能开源远程过程调用(RPC)框架。CoreOS 的分布式键值存储 etcd 就使用了 gRPC 进行点对点通讯,Docker 的便携式容器运行时 containerd 也通过 gRPC 暴露其功能,同时 containerd 本身也被捐献给了 CNCF。在 gRPC 中可以使用 Protocol Buffers 来定义服务的接口,Protocol Buffers 是一个强大的二进制序列化工具和语言。gRPC 也和诸多语言进行了集成,并可以自动生成特定语言的客户端和服务端接口。