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 们提供了明确的建设思路和选型规范,咱们也将会把云原生建设中所播种的教训和教训分享给大家,帮忙客户更顺畅地实现业务向云原生的转型。