一文带你读懂 CNCF Landscape
Cloud Native Computing Foundation,云原生计算基金会(以下简称 CNCF)是一个开源软件基金会,它致力于云原生(Cloud Native)技术的普及和可持续发展。云原生技术是通过一系列的软件、规范和标准帮助企业和组织,在现代的动态环境(如公共云、私有云和混合云)中构建和运行敏捷的、可扩展的应用程序。容器、微服务、微服务治理、声明式 API 等都是代表性的云原生技术。这些技术使松散耦合的系统具有更好的弹性、可管理性,同时更容易被监控和观察。这些技术通过与强大的自动化工具相结合,允许工程师频繁地、可预见地对系统进行任意的更改,并尽可能减少由此带来的工作量(在这些云原生技术和框架被采用之前,相信大家都有过针对系统任何一个小改动,都需要整个开发、测试、运维团队投入大量工作的痛苦经历),而这就是云原生技术最希望为技术团队以及业务带来的价值。
在每年的 CNCF 年度报告中都会提及 CNCF Landscape,CNCF Landscape 是 CNCF 中的一个重要项目,它始于 2016 年 11 月,旨在为云原生应用者提供一个资源地图,帮助企业和开发人员快速了解云原生体系的全貌。CNCF Landscape 项目在 Github 上已经获得超过 5000 颗星,表明广大开发者和使用者对该项目的关注和重视。CNCF Landscape 通过对云原生技术中的大多数项目和产品进行分类,来追踪整个生态中的大量应用。
CNCF Landscape 路线图
CNCF Landscape 最重要的产出包括一个路线图和一个全景图。路线图(Trail Map)是 CNCF 对云原生用户使用开源项目以及云原生技术的推荐过程。在路线图的每个步骤中,用户都可以选择供应商支持的产品或自己动手使用开源项目。
CNCF Landscape 路线图
整个路线图分成了十个步骤,每个步骤都是用户或平台开发者将云原生技术在实际环境中落地时,需要循序渐进思考和处理的问题:
1. 容器化。目前最流行的容器化技术是 Docker,你可以将任意大小的应用程序和依赖项,甚至在模拟器上运行的一些程序,都进行容器化。随着时间的推移,你还可以对应用程序进行分割,并将未来的功能编写为微服务。
2. CI/CD(持续集成和持续发布)。创建 CI/CD 环境,从而使源代码上的任意修改,都能够自动通过容器进行编译、测试,并被部署到预生产甚至生产环境中。
3. 应用编排。Kubernetes 是目前市场上应用编排领域被最广泛应用的工具,Helm Charts 可以用来帮助应用开发和发布者用于升级 Kubernetes 上运行的应用。
4. 监控和分析。在这一步中,用户需要为平台选择监控、日志以及跟踪的相关工具,例如将 Prometheus 用于监控、Fluentd 用于日志、Jaeger 用于整个应用调用链的跟踪。
5. 服务代理、发现和治理。CoreDNS、Envoy 和 LInkerd 可以分别用于服务发现和服务治理,提供服务的健康检查、请求路由、和负载均衡等功能。
6. 网络。Calico、Flannel 以及 Weave Net 等软件用于提供更灵活的网络功能。
7. 分布式数据库和存储。分布式数据库可以提供更好的弹性和伸缩性能,但同时需要专业的容器存储予以支持。
8. 流和消息处理。当应用需要比 JSON-REST 这个模式更高的性能时,可以考虑使用 gRPC 或者 NATS。gRPC 是一个通用的 RPC(远程调用)框架(类似各种框架中的 RPC 调用),NATS 是一个发布/订阅和负载均衡的消息队列系统。
9. 容器镜像库和运行环境。Harbor 是目前最受欢迎的容器镜像库,同时,你也可以选择使用不同的容器运行环境用于运行容器程序。
10. 软件发布。最后可以借助 Notary 等软件用于软件的安全发布。
CNCF Landscape 全景图
CNCF Landscape 路线图从实践步骤上帮助用户梳理了整个云原生应用的最佳流程。然而整个实践过程中的每个环节,用户都需要了解有哪些具体的软件和产品选择,这就是 CNCF Landscape 全景图发挥作用的地方了(https://landscape.cncf.io/)。
CNCF Landscape 全景图
这张全景图试图从云原生的层次结构,以及不同的功能组成上,让用户了解云原生体系的全貌,并帮助用户在不同组件层次去选择恰当的软件和工具进行支持。从总体来看,它将云原生生态分为以下几层:
Cloud
图中最底层是 Cloud(公有云,包括 AWS、Google、Azure、Ali、Baidu、Tencent 等)以及 Kubernetes 认证的服务提供商(主要是私有云,包括谐云、灵雀云、博云、才云、DaoCloud、Rancher 等提供商)
Provisioning
有了物理机或虚拟机后,在运行容器化服务之前,需要为容器准备标准化的基础环境,这就是 Provisioning 这一层的作用。在 Provisioning 这一层中,分为以下几个功能组成模块:
Automation & Configuration:用于自动化部署和配置容器运行平台和环境,代表工具和厂商包括 Ansible、Chef、Puppet、VMware、OpenStack。
容器镜像库:容器镜像库是整个 CNCF 云原生中的核心部件之一,因为基于容器的运行环境中,所有的应用都需要借助容器镜像库来进行安装和部署。容器镜像库又分为公有和私有,公有的容器镜像库包括 docker 官方的 registry,AWS 的 Elastic Container Registry,Google 的 Container Registry 等。在私有镜像库中,VMware 中国团队主导的 Harbor 得到了广泛的应用,大量的容器平台目前都基于 Harbor 构建其镜像仓库。
Security & Compliance:Notary 和 TUF(The Upgrade Framework)是这个领域两个主要的项目,其中 TUF 是一个开源的安全标准,Notary 是其中一个实现。Notary 软件除了确保软件的出处外,它还能保证在未经容器镜像提供者批准的情况下,不会在镜像供应链的任何地方修改镜像内的内容,从而确保从开发到运营的过程中,安全都被无缝统一地嵌入到整个工作流中。
Key Management:主要用于在整个容器平台中进行秘钥管理。
Runtime
Runtime 这一层可以理解为容器的整个运行环境,是云原生中最核心的部分,它包括了计算、存储、网络三大块:
Container Runtime:Docker 是最广为人知的容器运行环境,但生产环境下也有一些其他的容器环境在运行。Containerd 是满足 OCI 规范的核心容器运行时,从设计上就是为了嵌入大型系统的。它由 Docker Inc 公司启动,并且在 2017 年 3 月份捐赠给了 CNCF。此外,CoreOS 的 RKT 是一个用于在 Linux 上运行应用程序容器的 CLI,也可以作为安全、可组合和基于标准的容器虚拟化运行环境。
Cloud-Native Storage:起初,容器为无状态的运行单元,容器最上一层文件系统无法保存其在运行时写入的文件或数据,容器重建或重启后,这些写入的数据将丢失。但随着数据库、消息队列等中间件逐步在容器环境中得到应用,如今用户对容器持久化存储的理解和需求也更加深入和迫切。本文稍后还将对容器存储做更深入的分析。
Cloud-Native Network:网络历来是虚拟化技术中最灵活多变的部分,目前,大多数客户使用的主要包括 Calico、Flannel、Open vSwitch 等方案。
Orchestration Management
这一层主要负责容器平台的编排和调度,包括服务的发现和治理,远程调用,服务代理,微服务治理等组件,包括:
Scheduling & Orchestration:在这个领域,Kubernetes 是当仁不让的头号玩家,目前基于 Kubernetes 的容器生态得到了迅速发展。其它的编排工具还包括 Mesos、Docker Swarm 等。
Coordination & Service Discovery:分布式计算中很重要的一点就是各个服务之间的协同以及服务发现(或节点发现的问题),从老牌的 Zookeeper 到近年来在很多互联网厂商和应用中流行的 Consul(Docker Swarm 默认使用),都可以用于分布式服务的发现和配置,Kubernetes 默认使用的则是 CoreOS 旗下的 Etcd。
Remote Procedure Call:微服务间进行通信,通常有两种方式,其一为 HTTP REST-JSON 的方式,另一种为 RPC 方式,相比起来 RPC 方式效率更高。常用的包括 Google 开源的 GRPC 、apache 旗下的 thrift 框架、Netflix 开源的自带负载均衡的 ribbon 和 avra 数据序列化框架。
App Definition and Development
这一层就是容器平台上运行的具体应用和工具了,可以理解为容器平台的应用商店。根据应用的不同作用的使用场景,可以大致分为以下几种类型:数据库(例如 MySQL、MariaDB、mongoDB、PostgreSQL、Cassandra、TiDB 等)、流处理和消息队列(例如 Spark、Storm、RocketMQ、Kafka、RabbitMQ 等)、应用和镜像制作(用于将应用封装成标准镜像,使应用能在标准的容器平台上运行,例如 Helm、Docker Composer、Packer 等)、CI/CD(最常见的 Jenkins、Atlassian 公司开发的 Bamboo 等)。
Platform
从横向上看,整个云原生还包括众多的经过认证的平台供应商。
Observability and Analysis
这个部分包含了大量用于对平台进行监控(Prometheus、Nagios、Grafana、Zabbix 等)、日志(Fluentd、ElasticSearch、Logstash)、以及追踪(Jaeger)的工具。
综上所述,CNCF Landscape 全景图中包含了 CNCF 社区成熟或使用范围较广、具有最佳实践的产品和方案供用户在实际应用中选择。
在容器存储(Cloud-Native Storage)部分,焱融云的 YRCloudFile 是国内唯一被列入到 CNCF Landscape 的容器存储产品。
与 CNCF Landscape Cloud-Native Storage 部分其它产品和开源方案相比,YRCloudFile 具有大量独特的重要特性:
支持有状态容器在节点故障时,跨节点秒级重建,帮助有状态 Pod 有效应对节点故障。
提供细粒度的(PV 级别)的多数据中心容灾能力,可根据服务 SLA 要求创建和使用不同保护级别的 PV,并通过优先本地读技术,极大缩小数据访问延迟。
支持 PV Quota、QoS 等企业级特性,确保 PV 间不发生存储资源的抢占。
支持 RWX、RWO、ROX 等读写访问模式。
提供 CSI、FlexVolume 接口,并完成与灵雀云、谐云、Rancher、思科等多个容器平台供应商的对接。
通过 PV Hot Spot 功能,为上层业务快速定位数据访问热点,消除系统访问瓶颈。
PV Insight 功能,洞察 PV 内部数据分布及温度,为 PV 内部数据治理提供决策依据。
提供 Prometheus exporter,并与 Grafana 进行整合,完成监控体系的融合和统一。
全界面化呈现 Kubernetes 平台中 Pod、PV、PVC 之间的关联关系。
PV 性能的实时监控、历史监控记录和告警。
PV 动态 Resize。
支持 RDMA,提供极致性能。
通过以上的介绍,相信我们已经为众多即将在云原生应用,尤其是容器存储领域付诸实践的工程师团队、CIO 们提供了明确的建设思路和选型标准,我们也将会把云原生建设中所收获的经验和教训分享给大家,帮助客户更顺畅地完成业务向云原生的转型。
版权声明: 本文为 InfoQ 作者【焱融科技】的原创文章。
原文链接:【http://xie.infoq.cn/article/442843b585e9d0616d463006e】。文章转载请联系作者。
评论