【本节课目标】了解云原生的由来及基本概念
一、云原生定义
二、云原生技术栈
三、云原生特征及12要素
四、CNCF基金会发展
1、CNCF介绍
2、CNCF Landscape路线图
资源链接
CNCF组织介绍
Cloud Native Computing Foundation,云原生计算基金会(以下简称CNCF)是一个开源软件基金会,它致力于云原生(Cloud Native)技术的普及和可持续发展。云原生技术是通过一系列的软件、规范和标准帮助企业和组织,在现代的动态环境(如公共云、私有云和混合云)中构建和运行敏捷的、可扩展的应用程序。容器、微服务、微服务治理、声明式API等都是代表性的云原生技术。这些技术使松散耦合的系统具有更好的弹性、可管理性,同时更容易被监控和观察。这些技术通过与强大的自动化工具相结合,允许工程师频繁地、可预见地对系统进行任意的更改,并尽可能减少由此带来的工作量(在这些云原生技术和框架被采用之前,相信大家都有过针对系统任何一个小改动,都需要整个开发、测试、运维团队投入大量工作的痛苦经历),而这就是云原生技术最希望为技术团队以及业务带来的价值。
在每年的CNCF年度报告中都会提及CNCF Landscape,CNCF Landscape是CNCF中的一个重要项目,它始于2016年11月,旨在为云原生应用者提供一个资源地图,帮助企业和开发人员快速了解云原生体系的全貌。CNCF Landscape项目在Github上已经获得超过5000颗星,表明广大开发者和使用者对该项目的关注和重视。CNCF Landscape通过对云原生技术中的大多数项目和产品进行分类,来追踪整个生态中的大量应用。
整个路线图分成了十个步骤,每个步骤都是用户或平台开发者将云原生技术在实际环境一中落地时,需要循序渐进思考和处理的问题:
1.容器化
目前最流行的容器化技术是Docker,你可以将任意大小的应用程序和依赖项,甚至在模拟器上运行的一些程序,都进行容器化。随着时间的推移,你还可以对应用程序进行分割,并将未来的功能编写为微服务。
创建CI/CD环境,从而使源代码上的任意修改,都能够自动通过容器进行编译、测试,并被部署到预生产甚至生产环境中。
3,应用编排(Kubernetes)
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等软件用于软件的安全发布。
3、云原生景观图
CNCF Landscape路线图从实践步骤上帮助用户梳理了整个云原生应用的最佳流程。 然而整个实践过程中的每个环节,用户都需要了解有哪些具体的软件和产品选择, 这就是CNCF Landscape全景图发挥作用的地方了( https://landscape.cncf.io/)。
4、总结
我们可以简单地把云原生理解为
云原生 = 容器化(docker+k8s)
+ 微服务(Microservices)
+无服务(Serverless)
+ Devops
+ Service Mesh(服务网格)
+云(cloud)