CNCF Landscape解读

什么是CNCF Landscape?

CNCF(Cloud Native Computing Foundation)为云原生计算基金会的英文缩写,致力于云原生技术的普及和推广。

CNCF Landscape为CNCF的一个重要项目,为了帮助企业和个人开发者快速了解云原生技术的全貌,该项目维护在GitHub。CNCF Landscape的最重要的两个产出物为路线图和愿景图。

CNCF Landscape路线图

路线图的目的是指导用户使用云原生技术的路径和开源项目。其中包括了10个步骤。

CNCF Landscape愿景图

将云原生技术进行了分层分类,可以非常清晰的将云原生技术展示给用户。类似于软件架构中,又称“方块图”、“砌砖图”。

精简版图形如下:

供给层(provisioning)

愿景图的第一层,是云原生平台和云原生应用的基础。

自动化配置

关键词:IaC(基础设施即代码)、声明式配置

用来加速计算机资源的创建和配置,资源包括虚拟机、网络、防火墙规则、负载均衡等。只需要点击下按钮,即可自动化创建对应的资源,用来降低人工的维护。

典型工具代表:Terraform、Chef、Ansible、Puppet

CNCF项目列表:

CNCF项目项目阶段项目介绍
Akri沙箱
CDK for Kubernetes沙箱
Cloud Custodian沙箱
KubeDL沙箱
KubeEdge孵化华为开源的边缘计算项目
Metal3-io沙箱
OpenYurt沙箱阿里云开源的边缘计算项目
SuperEdge沙箱
Tinkerbell沙箱

容器镜像仓库

用来存储和拉取容器镜像,最简单的项目如docker官方的单机版的docker registry,所有的公有云厂商也都有自己的工具。

CNCF项目包括:

CNCF项目项目阶段项目介绍
Harbor毕业由vmware打造的镜像仓库,提供了很多企业级的特性,广受企业内部使用。
Dragonfly孵化阿里开源的基于P2P技术做镜像分发项目,在大规模集群的场景下效果会比较明显。

安全合规

关键词:镜像扫描、镜像签名、策略管理、审计、证书管理、代码扫描、漏洞扫描、网络层安全

用来监控、增强应用和平台的安全性,包括从容器到k8s的运行时环境均会涉及到。

CNCF项目包括:

CNCF项目项目阶段项目介绍
cert-manager沙箱证书签发工具,部署在k8s之上,通过抽象CRD Certificate来管理证书,也可以用来管理Ingress的证书
Confidential Containers沙箱
Curiefense沙箱
Dex沙箱
Falco孵化
in-toto孵化
Keylime沙箱
Kyverno沙箱基于k8s的策略引擎工具,通过抽象CRD ClusterPolicy的方式来声明策略,在运行时通过webhook的技术来执行策略。相比于opa & gatekeeper,更加k8s化,但却没有编程语言的灵活性。
Notary孵化
Open Policy Agent (OPA)毕业基于Rego语言的策略引擎,编程能力非常强大
Parsec沙箱
[The Update Framework (TUF)](The Update Framework)毕业

秘钥和身份管理

关键词:秘钥、身份、Secret、访问控制、认证、授权

CNCF项目包括:

CNCF项目项目阶段项目介绍
Athenz沙箱
SPIFFE孵化
SPIRE孵化
Teller沙箱

运行时层(Runtime)

云原生存储

关键词:PV、CSI、备份和恢复

云原生架构下,存储类的工具主要涉及到如下几个方面:

  1. 为容器提供云原生的存储。由于容器具有灵活、弹性的特点,云原生的存储相比传统存储会更复杂。
  2. 需要有统一的接口。这块基本都会使用k8s的CSI接口。另外,minio提供了S3协议的接口。
  3. 备份和还原功能。例如Velero可以用来备份k8s本身和容器使用到的存储。

CNCF项目包括:

CNCF项目项目阶段项目介绍
CubeFS孵化
K8up沙箱
Longhorn孵化
OpenEBS沙箱
ORAS沙箱
Piraeus Datastore沙箱
Rook毕业
Vineyard沙箱

容器运行时

容器运行时的三个主要特征:标准化、安全、隔离性。Containerd和CRI-O为容器运行时的标准实现方案,业界类似KataContainer的方式为将VM作为容器运行时,gVisor方案则在OS和容器中间增加了额外的安全层。

发展趋势:

  1. 基于 MicroVM 的安全容器技术,通过虚拟化和容器技术的结合,可以提升更高的安全性。比如 KataContainer。
  2. 操作系统的虚拟化程度进一步增加。Linux 4.5 版本的 CGroup V2 技术逐渐成熟,进一步提升了容器的隔离能力。Docker 提供了 rootless 技术,可以以非 root 用户运行,提升了容器的安全性。
  3. WebAssembly技术作为跨平台的容器技术可能会作为新的挑战者出现。
CNCF项目项目阶段项目介绍
Containerd毕业
CRI-O孵化k8s的CRI的轻量级实现,支持runc和kata作为容器运行时
Inclavare Containers沙箱
rkt归档CoreOS公司主导研发的容器引擎,昔日的Docker竞争对手,目前已经没落,已经被CNCF归档
WasmEdge Runtime沙箱

云原生网络

关键词:SDN、CNI、Overlay网络

云原生网络具体指的是容器网络,k8s定义了CNI的网络规范,开源项目只需要实现CNI的网络规范即可,社区有非常多的CNI项目可以选择,比如Calico、Flannel、Weave Net等。网络分为Underlay和Overlay网络,其中容器网络为SDN网络,以overlay网络居多。

CNCF项目项目阶段项目介绍
Antrea沙箱
Cilium孵化
CNI-Genie沙箱华为云开源的多网络平面的项目,该项目并非具体的网络插件实现,而是k8s的CNI和具体网络插件实现的中间层,可以实现同一个节点上有多种网络插件的实现,支持同一个pod中有多个网卡。
CNI(Container Network Interface)孵化k8s的容器网络规范,指的一提的是在[plugins](containernetworking/plugins: Some reference and example networking plugins, maintained by the CNI team. (github.com))项目中,提供了很多k8s内置的简单容器插件,比如macvlan、bandwidth等
Kube-OVN沙箱
Network Service Mesh沙箱
Submariner沙箱Rancher公司开源的项目,用来解决k8s的多集群场景下的跨集群互通问题

编排和管理层(Orchestration & Management)

调度和编排

在单机的系统中,操作系统会来调度系统中运行的所有的进程,允许某个时间点调度某个进程到某个cpu上面。在集群的环境中,同样需要调度容器在某个时间点运行在某台主机的某个cpu上。

在云原生社区基本上形成以k8s为生态的调度和编排,主要的发展方向为:

  • 扩展k8s自身的功能。
  • k8s的多集群方向。
CNCF项目项目阶段项目介绍
Crossplane孵化
Fluid沙箱
Karmada沙箱华为云开源的k8s多集群管理项目,用来管理多个k8s集群。自己实现了一套完整的apiserver、scheduler、controller-manager,用来多k8s集群的调度。
kube-rs沙箱
Kubernetes毕业CNCF的最重要项目,在容器编排领域具有绝对的统治地位。俗称“现代数据中心的操作系统”
Open Cluster Management沙箱Redhat主导的k8s多集群项目
Volcano孵化华为云开源的基于k8s的容器批量计算平台,常用于大数据、AI领域。k8s默认的Job设计较为简单,无法满足很多批处理场景。Volcano通过CRD扩展的方式定义了Queue、PodGroup、VolcanoJob等实现对批处理作业的抽象,并通过调度器扩展的方式来大幅提升pod的调度效率。
wasmCloud沙箱

调协和服务发现

该领域主要包含两类工具:

  1. 服务发现引擎。
  2. 域名解析服务。比如CoreDNS。
CNCF项目项目阶段项目介绍
CoreDNS毕业
etcd毕业
k8gb沙箱

远程过程调用(RPC)

用于进程间通讯的框架,主要解决的问题:

  1. 提供了框架,使开发者编码更简单。
  2. 提供了结构化的通讯协议。
CNCF项目项目阶段项目介绍
gRPC孵化业界使用较为广泛的RPC框架

服务代理

通常又称为负载均衡,从协议上来划分,可以分为四层负载均衡和七层负载均衡。

CNCF项目项目阶段项目介绍
BFE沙箱
Contour孵化
Envoy毕业
OpenELB沙箱

API网关

相比于七层负载均衡,API网关还提供了更多高级特性,比如认证、鉴权、限流等。

CNCF项目项目阶段项目介绍
Emissary-Ingress孵化

服务网格

值得注意的是,业内最为流行的istio项目并不在该范围内。

CNCF项目项目阶段项目介绍
Kuma沙箱
Linkerd毕业流行的服务网格项目
Meshery沙箱
Open Service Mesh沙箱
Service Mesh Interface沙箱
Service Mesh Performance沙箱

应用定义和应用部署

数据库

CNCF项目项目阶段项目介绍
SchemaHero沙箱
TiKV毕业国内公司PingCAP开源的分布式kv数据库
Vitess毕业用来扩展mysql集群的数据库解决方案,突破单mysql集群的性能瓶颈

流式计算和消息

CNCF项目项目阶段项目介绍
CloudEvents孵化仅描述了事件的数据规范,并非具体的实现
NATS孵化
Pravega沙箱
Strimzi沙箱
Tremor沙箱

应用定义和镜像构建

CNCF项目项目阶段项目介绍
Artifact Hub沙箱
Backstage孵化
Buildpacks孵化
Devfile沙箱
Helm毕业k8s的应用打包工具
Krator沙箱
KubeVela沙箱阿里云开源的基于OAM的应用模型的实现,用来做应用的发布,同时支持多集群
KubeVirt孵化
KUDO沙箱
Nocalhost沙箱
Operator Framework孵化用来开发基于k8s CRD的operator框架,功能跟k8s亲生的kubebuilder非常相似
Porter
sealer沙箱阿里云开源的集群部署工具,理念比较先进,通过升维的方式可以通过类似Dockerfile的方式来构建集群镜像,并可以通过类似docker run的方式一键拉起完成的一套基于k8s的集群环境
Serverless Workflow
Telepresence

持续集成和持续交付

CNCF项目项目阶段项目介绍
Argo孵化k8s上应用广泛的工作流引擎
Brigade沙箱
Flux孵化gitops工具
Keptn孵化
OpenGitOps沙箱
OpenKruise沙箱基于k8s能力扩展的组件,通过CRD的方式定义了很多对象,用来增强k8s的workload能力。该组件放到该领域下有些不合适。

可观测和分析

监控

CNCF项目项目阶段项目介绍
Cortex孵化
Fonio沙箱
Kuberhealthy沙箱k8s的巡检工具,用来检查k8s的健康状态。支持以插件的方式接入巡检脚本。
OpenMetrics沙箱从Prometheus项目中发展出来的监控数据格式标准,该项目仅定义标准,非实现。
Pixie沙箱
Prometheus毕业云原生领域事实上的监控标准
Skooner沙箱
Thanos孵化prometheus的集群化方案
Trickster沙箱

日志

CNCF项目项目阶段项目介绍
Fluentd毕业日志收集工具

分布式会话跟踪

CNCF项目项目阶段项目介绍
Jaeger毕业User开源的完整的分布式会话跟踪项目
OpenTelemetry孵化同时集成了监控、日志和分布式会话跟踪三个领域的数据收集工具,大有一统可观察性领域的趋势。
OpenTracing归档已经完全被OpenTelemetry取代

混沌引擎

CNCF项目项目阶段项目介绍
Chaos Mesh孵化
Chaosblade沙箱
Litmus沙箱

参考资料