简介:介绍为什么要学习云原生?因为这不仅是趋势,更是现在。为什么要考CKA/CKAD?因为能帮助你建立一个使用者角度的知识架构体系出来。以及我个人备考的心得,主要是看文档,多上集群实操。
前言:春节期间因为疫情影响只能在家,正好用来进行网上视频复习,并在1月28日完成CKAD的考试,1月29日拿到通过证书,加上去年底拿到的CKA证书,我已经通过了CNCF的两大认证,即CKA和CKAD。现在写下这篇文章,介绍我为什么考CKA以及我的备考经验,希望可以帮助到有同样想法的同学。
2011年著名互联网企业家和投资人Marc Andreessen在《华尔街日报》上指出“Software is eating the world”,他指出很多行业的创新领先者(例如广告行业的谷歌,视频行业的netflix)其实都是软件公司。而现在这个趋势越来越明显,即所有的行业都在进行数字化改造,每个行业的创新领先公司都是技术公司,是能充分利用互联网技术优势的互联网化的公司。而互联网公司中,研发是重要的基础部门。互联网研发的两个重要特点:1.是 Agile,即快速的迭代上线;2是scale,即能低成本进行快速弹性伸缩,流量激增的时候能快速扩容扛住,容量减少的时候也能快速缩容来降低成本。能比同行业的竞争对手进行更快的迭代和更低成本的伸缩是他们胜出的关键优势之一。
而要做到agile和scale,快速迭代的研发团队流程,弹性伸缩的基础设施还有易扩展和演进的系统架构,这三者缺一不可。而这三者的演进趋势:研发流程从瀑布到Agile,再到现在的DevOps;系统架构从单体到分层, 再到微服务;基础设施从实体机到虚机,再到容器和容器编排; 都无一不深刻的体现出“唯有更好的支持Agile & Scale,才是研发演进的方向“。而工程师以后不会有开发/测试/运维之分,只会有负责上层业务开发和维护的工程师和负责下层基础设施开发和维护的工程师之分了,而且即使是业务工程师也需要了解和完成部分底层基础设施的一些工作,(虽然严格来说基层技术设施和上层业务是解耦的。)所以每个工程师要在未来的5年内保持竞争力,都需要了解云原生的一些基础知识,了解和使用Docker和Kubernetes技术。
而要学习一门技术,尤其是一门在不断迭代而内容和范围又非常广泛的技术(Kubernetes版本发布很快,每年4个大版本),如果不从一开始即建立一个大的picture即完整的知识体系,而是从一些细小的地方从源码开始啃起,很容易陷入“只见树木不见森林”的地步,而且学习效率也会偏低。而如何建立起一个大的picture呢?先从外到内,即先会使用,然后了解其原理和机制,必要的时候才去定制。那么如何验证我已经从使用的角度来建立起大的picture呢?感谢CNCF的组织,他们有现成的Kubernetes学习和认证体系,即通过他们的认证,那么可以比较有信心的确认已经建立起一个完整的知识体系,从而为下一步的学习和研究打下很好的基础。而这个CNCF的认证体系就是CKA和CKAD。CKA适合系统管理员,CKAD适合应用开发者,两个考试相同的部分是对Kubernetes的架构和术语都要求熟练了解, 不同的地方是CKA中会有setup cluster,debug 和fix cluster问题的内容,而CKAD会有Pod Design方面的内容。
而我在百度内部编写大纲和教材,召集志愿者作为讲师,并组织完成了10期Kubernetes Bootcamp即入门训练营。每期采用线下授课方式,使用百度云Kubernetes集群作为实际环境,采用边讲边练的方式进行大量的实操,每期5个晚上,共5门课程12个小时。已经有500+工程师参加培训,口碑反馈特别好。而通过CKA和CKAD认证更能验证我组织的大纲和培训方式是有助于学员进行云原生基础知识的学习,为之后进一步业务上云做好思想上和技能上的准备。
当然呢,通过CKA和CKAD考试,对于某些同学来说增强职场竞争力,甚至作为入职某些云企业的敲门砖是很有用的,但是从我的角度来说,建立起从使用角度的整个知识体系(而这个体系是经过大企业和开源基金会认证和背书 过的),从而为下一步的更深入学习建立基础,这才是我希望达到的目的,而毫无疑问,CKA和CKAD可以帮助我,确认我已经达到一定水准。