云原生架构师指南
Posted 小车云分享
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了云原生架构师指南相关的知识,希望对你有一定的参考价值。
云原生的概念主要是基于容器云,其主要原则是,软件产品从设计、开发到交付,全流程都考虑适配容器云的环境。传统的开发,是本地开发与测试,测试环境再次测试,然后部署上线,如果有上容器的需求,那么再编写Dcokerfile,做容器化改造,最后部署到容器云上
云原生的产品,开发,测试和上线都是完全兼容容器云的环境,例如通过EclipseChe镜像开发,提交到git上,从nexus拉取基础镜像,与代码进行编译成应用镜像,在经过功能测试和代码检查后,再部署上线
云原生可以理解为云计算的升级版,云计算的概念在aws最开始提出来时,强调的是计算能力,而现在上云的应用需求越来越多,已不仅仅是计算,也包括存储,中间件等,所以云原生的概念被提出,各大厂商联合成立云原生计算基金会,专门管理云原生的相关产品
下图是已毕业的CNCF项目,囊括了容器编排、日志监控、分布式追踪等主要应用,这些产品不仅仅是适配容器云,还有足够的终端客户和开发贡献者,客户代表着项目存在的价值,贡献者代表着项目的活跃度
二、云原生的生态
生态主要强调的是各个方面的配合,涉及到提供方(云服务提供商和开源社区)和使用方(终端客户)
具体来说,一是产品出来要有人用,再好的东西,没有市场不行,二是要有稳定的开发者,并且开发者必须来自不同的组织,云原生的一个核心点是开源,只有一家开发不行,在CNCF的项目指南中也强调这一点,任何项目必须来自至少两个组织的开发者,闭门造车出来的东西,再好也不会被云原生认可
知名的互联网大佬,如google,IBM,阿里这些,不仅仅在做开源方面的贡献,也有对应的商业产品交付,Rancher,Openshift等属于商业容器云产品,但上游技术框架仍然是kubernetes
三、云原生的技术栈
技术栈包括这么几类:
1,容器运行时,例如containerd,cri-o等,容器运行时对性能有较大影响,例如nvidia的GPU训练,在docker中使用GPU训练,性能明显优于在虚拟机里面,因为nvidia原生提供docker容器运行时nvidia-docker,而虚拟机只能使用设备映射的方式
3,数据库及存储类工具,例如etcd,rook,etcd是kubernetes的核心,存放service和configmap等集群状态信息,rook是用来安装ceph存储的
4,日志和监控工具,例如fluentd,prometheus
四、云原生的价值
更确切的说,是kubernetes结合必要的组件所产生的价值
1,弹性伸缩的能力,这个也是最开始K8S的核心价值,因为K8S本身就是为了适应大规模容器环境而开发的,如果仅仅是为了上容器,那docker-compose凑合着也能用,但是生产环境中,还是要强调高并发的能力,需要秒级弹性的能力,机器学习的推理场景就特别需要这个能力,HPA是其主要实现
2,高可用的能力,主要强调的是平台层提供的高可用,例如mysql,kafka等常用中间件的高可用,Operator是其主要实现
3,DevOps提速,开发运维的一体化包括了从源码,编译,测试,发布等流水线的作业,可以解决了业务产品快速迭代,以及可信源的问题,从源头上确保了应用的安全可信,Gitlab,Nexus,Maven等是主要实现
4,服务治理的能力,一个大的应用,转化为以多个容器组成的应用,这个就是微服务,从平台层面看,我们可以查看服务间调用的情况,找出性能瓶颈,istio是其主要实现
5,资源纳管的能力,kubernetes不仅仅是对容器资源的编排和调度,也可以对虚拟机进行纳管,部分对独立内核有要求的应用仍然可以使用虚拟机资源,kubevirt是其主要实现,现已进入CNCF的沙盒中
五、云原生的应用
当具备这些能力后,在云原生平台上,就可以实现金融科技数字化转型的诸多应用,包括热门的人工智能,区块链,和大数据等应用
目前这方面探索包括,在人工智能上,主要集中于机器学习平台的建设,例如开源的kubeflow;在区块链上,例如hyperledger的fabric;在大数据上,例如实时流处理的Flink和离线批处理的Spark。这些应用都在拥抱云原生的诸多能力。
以上是关于云原生架构师指南的主要内容,如果未能解决你的问题,请参考以下文章