写在最前面 - 《看懂每一行代码 - kubernetes》
我要写什么
《看懂每一行代码 - kubernetes》会包含k8s整个项目的源码解析,考虑到门槛问题,在开始分析k8s之前我会通过一些更低难度的golang开源项目讲解来帮助大家提升golang编码技能;然后通过与k8s相关的一些项目的讲解,打通阻碍k8s学习的一些大障碍;最后集中火力,将kubernetes项目的整个源码吃透。
总体来说,本系列计划分三步走完成源码层面掌握k8s的目标:
golang技能提升
k8s依赖技术
k8s核心组件
目前关于k8s应用的教程已经很多了,其中不乏相当优秀的文章,所以我不会特地去讲解k8s是功能层面知识点。本教程对大家的入门要求是会一点golang,会k8s的常规操作。
写给谁看
k8s的热门程度不需要我再赘述,k8s技术的重要性相信大家也都清楚,不会玩k8s怎么好意思说自己是搞云计算的呢?
对k8s技术有一定了解的技术人员,如果你对k8s感兴趣,并且希望深入掌握这项技能,乃至从源码层面掌握k8s,做一个大牛,参与CNCF社区贡献,但是苦于源码门槛太高,不知从何下手,那就对了,这个教程就是写给你看的!
有什么特点
《看懂每一行代码 - kubernetes》会在公众号“CloudGeek”和博客园“CloudGeek”同步更新。为了贴合移动端阅读时间碎片化的特点,本教程每一篇文章不会太长,阅读完大约是十几分钟的样子;当然要彻底掌握谈及的每一行代码,可能还是需要你打开PC,在IDE中自己对照着过一边源码,这个步骤需要多少时间就和自己的基本功相关了。
本系列教程从cache2go等只有几百行源码的小项目开始讲解,针对有一些golang基础知识,但是并不精通golang,暂时还无法直接阅读k8s源码但是想往k8s源码贡献者发展的IT技术人员。
在源码分析过程中会涉及到一些技术专题,我会在《Golang进阶 - 专题讲解》等系列专门分析。比如说源码中涉及到了堆操作,涉及到了各种锁的应用,一致性哈希算法等各个方向的问题,我会专门写一个专题文章讲解,让有技术强迫症的朋友的能够全面掌握k8s,而不是看几行,留着一个看不懂的算法,心里一个疙瘩,纠结则影响进度,不纠结则觉得不完整。
为什么要写
首先我在工作中主要研究方向是容器化技术栈,也就是CNCF社区中的一堆技术。为了能够在这个方向深入,我给自己定了一个目标:成为kubernetes组织的member。成为member简单说就是能够持续贡献源码。在阅读源码的过程中走了很多弯路,最后我意识到这么大的项目开始就一头扎进去及其容易迷失在k8s庞大的源码及第三方依赖库里。所以我后来是选择了从小项目开始读源码,提升能力,再看k8s。我希望把这个过程分享出来,帮助更多人掌握k8s,享受技术的乐趣。
还有一个重要的原因是我知道在读源码的过程中,每一个知识点只有写出来,把别人讲懂,才能真正说明自己读懂了。所以写这个系列教程也是出于对自己的监督,输出倒逼输入。

写在最前面 - 《看懂每一行代码 - kubernetes》的更多相关文章
- 不要写很酷但同事看不懂的Java代码
你好呀,我是沉默王二,一个和黄家驹一样身高,和刘德华一样颜值的程序员.为了提高 Java 编程的技艺,我最近在 GitHub 上学习一些高手编写的代码.下面这一行代码(出自大牛之手)据说可以征服你的朋 ...
- Android中活动的最佳实践(如何很快的看懂别人的代码activity)
这种方法主要在你拿到别人的代码时候很多activity一时半会儿看不懂,用了这个方法以后就可以边实践操作就能够知道具体哪个activity是干什么用的 1.新建一个BaseActivity的类,让他继 ...
- 你闺女也能看懂的插画版 Kubernetes 指南
Matt Butcher是Deis的平台架构师,热爱哲学,咖啡和精雕细琢的代码.有一天女儿走进书房问他什么是Kubernetes,于是就有了这本插画版的Kubernetes指南,讲述了勇敢的Phipp ...
- 看懂下面C++代码才说你理解了C++多态虚函数!
#include <iostream> using namespace std ; class Father { private : virtual void Say() //只有添加 ...
- C语言-人狼羊菜问题-最容易看懂的解决方法及代码
题目描述:农夫需要把狼.羊.菜和自己运到河对岸去,只有农夫能够划船,而且船比较小,除农夫之外每次只能运一种东西,还有一个棘手问题,就是如果没有农夫看着,羊会偷吃菜,狼会吃羊.请考虑一种方法,让农夫能够 ...
- 从字符串到常量池,一文看懂String类设计
从一道面试题开始 看到这个标题,你肯定以为我又要讲这道面试题了 // 这行代码创建了几个对象? String s3 = new String("1"); 是的,没错,我确实要从这里 ...
- T4代码生成脚本从添加注释,添加命名空间开始(一款强大的代码生成工具从看懂脚本,到随心所欲的玩弄代码,本文只是T4的冰山一角,博主将不断深入探索并完善该文章)
精通T4脚本要从读懂脚本的关键代码片段开始 1.1. 给类添加注释-->看懂类对应的代码:<#=codeStringGenerator.EntityClassOpening(entity ...
- 【Luogu】P2765魔术球问题(没看懂的乱搞)
题目链接 这题……讲道理我没看懂. 不过我看懂题解的代码是在干嘛了qwq 题解是zhaoyifan的题解 然后……我来讲讲这个题解好了. 题解把值为i的球拆成了两个,一个编号是i*2,一个编号是i*2 ...
- HashMap源码深度剖析,手把手带你分析每一行代码,包会!!!
HashMap源码深度剖析,手把手带你分析每一行代码! 在前面的两篇文章哈希表的原理和200行代码带你写自己的HashMap(如果你阅读这篇文章感觉有点困难,可以先阅读这两篇文章)当中我们仔细谈到了哈 ...
随机推荐
- Android SQLite数据库升级,怎么做(事物更改)
SQLiteOpenHelper // 如果数据库文件不存在,只有onCreate()被调用(该方法在创建数据库时被调用一次) public abstract void onCreate(SQLite ...
- 纯javascript实现可拖住/大小的div
好久没写了,不得不说人懒了好多.. 也不打算实现什么太厉害的功能,因为不喜欢网上那些一大堆代码的,看的头晕,于是自己写了一个 旨在越简单越好(当然也走点形式- -其实是自己菜),所以一些宽度和高度都写 ...
- vs2010 sp1 安装Silverlight5 语言版本不匹配的问题
好久之前用silverlight写了个程序,今天心血来潮想给朋友看一下,朋友更新了sl5,但是运行不起来. 所以有点郁闷,于是打算更新项目到silverlight5. 装sp1后,下载silverli ...
- .NET题目(收集来自网络)
1: .NET和c#有什么区别? 答: .NET一般是指.NET FrameWork框架,是一种平台,一种技术 c#是一种编程语言,是可以基于.NET平台的应用 2: c#中的委托是什么?事件是不是一 ...
- PageHelper分页插件的使用
大家好!今天写ssm项目实现分页的时候用到pageHelper分页插件,在使用过程中出现了一些错误,因此写篇随笔记录下整个过程 1.背景:在项目的开发的过程中,为了实现所有的功能. 2.目标:实现分页 ...
- 将DataRow拷贝到另一个DataRow
DataRow dr = dtPadFluid.Rows[gvPadFluid.FocusedRowHandle]; foreach (DataColumn dc in _dr.Table.Colum ...
- 使用 python 实现π的计算
1.π的神奇 π是一个无数人追随的真正的神奇数字.我不是很清楚一个永远重复的无理数的迷人之处.在我看来,我乐于计算π,也就是计算π的值.因为π是一个无理数,它是无限的.这就意味着任何对π的计算都仅仅是 ...
- 算法与数据结构(五) 普利姆与克鲁斯卡尔的最小生成树(Swift版)
上篇博客我们聊了图的物理存储结构邻接矩阵和邻接链表,然后在此基础上给出了图的深度优先搜索和广度优先搜索.本篇博客就在上一篇博客的基础上进行延伸,也是关于图的.今天博客中主要介绍两种算法,都是关于最小生 ...
- 举例子来说明Python引用和对象
今天看到这么一句奇怪的话: python中变量名和对象是分离的:最开始的时候是看到这句话的时候没有反应过来.决定具体搞清楚一下python中变量与对象之间的细节.(其实我感觉应该说 引用和对象分离 更 ...
- [Java]LeetCode237. 删除链表中的节点 | Delete Node in a Linked List
Write a function to delete a node (except the tail) in a singly linked list, given only access to th ...