如何学习云原生
什么是云原生
云原生以容器、微服务、DevOps,持续交付等技术为基础建立的一套云技术产品体系。这是一种新型技术体系,是云计算未来的发展方向。从1999年到2024年,本地部署和市场云化此消彼长,企业上云的速度随着虚拟化等技术的发展大大加快,未来可能将成为各大企业的一项基础能力。所以作为一名刚入行或资深的工程师,我觉得都应该对云原生相关的概念和技术了解,提升自己的核心竞争力。
如何从零开始学习云原生
云原生技术体系非常的庞大,我们可能经常听到docker,k8s(kubernetes)等相关的名词,其实并不止于此。
先来看一张图:
这是来自CNCF(原生计算基金会)的云原生全景图,链接:https://landscape.cncf.io/,这里描述了云原生相关领域的项目,主要还是围绕着容器编排,治理,监控等建立起来的生态,全景图已经包含了云原生应用所关联的方方面面,可以给我们一个学习的方向与指示。
但是大家也不要害怕,看到这么多密密麻麻的项目,大家也不用对每个项目都进行深入的研究,毕竟如果能研究并实现出其中一个项目就已经很牛逼了。但是如果只是为了了解基本的概念那就更简单了。
学习路线
这里不会详细到具体的linux或者计算机网络的底层知识,如果发现在学习其中有对应的疑惑的时候找对应的书籍或资料学习即可。接下来会介绍一下云原生的学习路线和一些推荐学习资源,每个人的学习方式不同,这里的学习路线只是一个个人学习思路参考,希望可以帮助到大家。
kubernetes
云原生中最重要的就是Kubernetes,简称k8s。所以我们的学习核心就是k8s,根据k8s辐射到云原生学习的其他领域,k8s可以说是云原生时代的操作系统,内部的设计是非常的复杂,每一个设计都有他运用的领域,我们可以先尝试去理解里面的一些基本概念,比如Node,Pod,Service,等资源对象,慢慢的去了解k8s的网络原理,存储原理,核心组件的运行机制,k8s的拓展等等深入的知识。
推荐一些学习k8s资源:
容器运行时
由于所有的项目都是跑在容器里面,所以我们在学习k8s的pod的时候我们就知道我们需要学习一下容器的运行时,比如大名鼎鼎的docker,containerd等。这时候我们就开始设计到landscape的这一块内容了
推荐docker的学习资料:
- Docker技术入门与实战,学习下一些docker的操作命令,知道如何去操作镜像,打包镜像等即可
容器仓库
在我们学习docker的时候,知道了如何打包镜像后,这时候我们可能会有我们自己的一些项目镜像,但是我们又不想上传到dockerHub等公开仓库,我们可能会思考可不可以像gitlab一样搭建属于我们自己的镜像仓库呢?那么这时候我们就来到了landscape的这一块区域,我们可以学习着去搭建一个Harbor去存储我们的私有镜像。
服务发现
学习完容器相关的东西,我们回到我们的k8s,我们发现k8s的数据都存储在etcd中,甚至还能自己服务注册与服务发现,我们想了解一下服务注册,服务发现,配置中心,注册中心等相关的内容,于是我们就来到了landscape的这一块内容:
这里强烈推荐一波etcd,用过都说好,etcd的学习书籍:
代理/网关
继续学习我们的k8s,当我们学习Service的时候,对ingress比较感兴趣,想深入了解一下网络代理,ingress网关或者api网关的时候,我们就可以根据landscape的这一部分内容进行深入的研究,比如envoy,apisix,traefik,mosn等项目。
分布式存储
在学习k8s的时候,碰到一些有状态应用,我们需要保存下一些数据信息,这时候我们可能用到一些分布式存储,这时候我们可以从landscape这一块中找寻我们需要的:
可观测性
在我们的项目都在k8s运行起来后,我们可能需要对项目的一些可观测性有需求,比如ELK日志,Promerheus监控,Skywalking,zipkin链路追踪等,我们同样可以开始学习landscape的这一块的内容:
分享资料:
- 深入浅出Prometheus:原理、应用、源码与拓展详解
服务网格
k8s的功能已经非常强大了,但是他主要是提供服务编排等能力,在服务治理相关能力上却显得不足了,所以我们可以学习服务网格相关的服务治理能力。
istio作为后 Kubernetes 时代的微服务治理框架,是非常值得我们去学习与关注的,推荐资料:
小总结
云原生涉及的内容非常多,上文只是一个抛砖引玉,给各位想学习云原生领域知识的小伙伴一个导火线,实际云原生内容不止上文所列出的内容,可能学到头秃都学不完,大家可以围绕k8s找到自己感兴趣的方向去学习,希望能帮助到大家,可以的话给我的知乎点个赞啥的😄(知乎https://zhuanlan.zhihu.com/p/357531227)。祝大家在云原生领域都有所成就!