今天我们开始讲kubernetes的源码!

之前的其他开源项目还没有说完,后续会陆陆续续更新,我们把主线先放到k8s的源码上。

之前我想详细讲解每一行k8s源码,但是越看越发现一个大型开源项目如果拘泥于每一行的逻辑,很容易把战线拉得太长,最后失去兴趣。所以今天我们先聊聊源码该怎么看。

1、目标

我们为什么要看k8s源码?

我认为无非是提升golang功力、深入k8s原理、参与k8s社区,最后成为一个资深的云计算技术人,享受技术的乐趣(当然云计算技术栈之大不是一个k8s所能代表的,但是显然云计算已经离不开k8s,有能力参与k8s社区的工程师后续继续深入各种cncf技术也会轻松很多,cncf里涉及的各种技术基本奠定了paas,或者说容器云的基础)。

2、方法

第一步:熟悉k8s的基本功能,理解各个组件的分工,做到心中有数,但是不拘泥于掌握每一个功能细节,因为很多特性在日常开发中很难用到(比如各种alpha阶段的api,生产中不会让用的)。

第二步:选定第一个要深入研究的组件,概览其支持的所有子命令和flag,知道该组件能实现哪些功能(知道基于什么实现,和哪些组件打交道),比如看kube-proxy至少先知道是用iptables实现的,得先补补iptables的知识。

第三步:选定源码版本,不要追求master分支,天天变想想也心累啊!建议选一个相对新的,或者是你们公司正在使用的版本

第四步:准备编译、测试环境。也就是一个至少能够把你看的组件编译出来,能够运行起来后debug的环境,这样才能在debug中看各种你在读源码时不理解的对象在运行中到底存了哪些数据。

第五步:最快的速度抓住代码主线,泛读源码。

第六步:针对特定功能精读,调试,深入理解。

第七步:整体精读,适当深入三方库,公共库,绘制整理单个组件架构图、流程图等,帮助自己理解整个组件工作全流程,在平时使用中遇到bug后能够快速反应过来是哪个模块的问题。

最后:读完所有组件后融会贯通,理解各种公共库的抽取逻辑,整个k8s了然于胸!

今天准备啥?

我们选择从1.10版本入手,一方面是目前1.9及之前版本的资料比较多,1.10是不久的将来资料会比较丰富,用户基数比较多的一个版本,所以等到多数人看到本教程的时候,有不懂的地方到网上查时相对1.12这种新版会更轻松。另外是我们在项目中选型用了1.10版本,在近一两年工作中我主要使用的也是1.10版本(当然社区新特性会关注,参与社区也是跟着master走)。

今天我们需要下载好1.10版本的源码,准备go开发环境。

->下代码:

$ git clone https://github.com/kubernetes/kubernetes.git

->本地路径:

$ D:\go\src\k8s.io\kubernetes

->gopath:

$ D:\go\src

ok,go开发环境配置默认大家都是会的,不然也不适合开始后面的学习。

kubernetes的编译和debug环境后面我们再准备,下一讲我们先开始过scheduler组件的逻辑,熟悉代码后再准备环境开始debug。

转载于:https://www.cnblogs.com/cloudgeek/p/9939233.html

100 - k8s源码分析-准备工作相关推荐

  1. k8s源码分析--kube-scheduler源码(一)

    版本:v1.13.0 启动分析 kubernetes基础组件的入口均在cmd目录下,kube-schduler入口在scheduler.go下. kubernetes所有的组件启动采用的均是comma ...

  2. k8s源码分析 pdf_rook源码分析之一:rook架构解析

    rook简介 Rook是一款云原生环境下的开源分布式存储编排系统,目前支持 Ceph.NFS.Edegefs.Cassandra.CockroachDB等存储系统.它实现了一个自动管理的.自动扩容的. ...

  3. k8s源码分析 pdf_Spark Kubernetes 的源码分析系列 - features

    1 Overview features 包里的代码,主要是用于构建 Spark 在 K8S 中的各类资源所需要的特征,个人觉得可以理解成这些 features 就是帮你写各类 Kind 的 YAML ...

  4. k8s源码分析 pdf_《k8s-1.13版本源码分析》上github

    要干嘛? 猪年新气象,今年开始,kubernetes源码分析系列文章主战场从微信公众号转至github,完全使用Markdown重写,使用gitbook生成web页面,支持在线阅读,导出pdf等各种玩 ...

  5. k8s源码分析 pdf_我是怎么阅读kubernetes源代码的?

    为什么要阅读代码?怎么阅读k8s源代码?源代码中包含了所有信息.写开源软件,从文档和其他地方拿到的是二手的信息,代码就是最直接的一手信息.代码就是黑客帝国中neo看到的世界本源. 文本并不是代码本身. ...

  6. k8s源码分析 pdf_如何高效阅读 Kubernetes 源码?

    IT 技术日新月异,想必每个 IT 人都会有类似的焦虑:我该学习什么?哪些知识学到就是赚到?怎样学习才能最有效提升编程能力? 阅读优秀的代码是提高编程能力万无一失的办法.诚然,提高编程能力的显著方法是 ...

  7. 【kubernetes/k8s源码分析】 kubelet cgroup 资源预留源码分析

    kubernetes 1.13 WHY 默认情况下 pod 能够使用节点全部可用资源.用户 pod 中的应用疯狂占用内存,pod 将与 node 上的系统守护进程和 kubernetes 组件争夺资源 ...

  8. 【kubernetes/k8s源码分析】kubelet cri源码分析

    CRI基本原理 早期的 kubernetes 使用 docker 作为默认的 runtime,后来又加入 rkt,每加入一种新运行时,k8s 都要修改接口.container runtime 加入,不 ...

  9. 【kubernetes/k8s源码分析】eviction机制原理以及源码解析

    kubernetes v1.12.1 What? kubelet 驱赶的是节点上的某些 Pod,驱赶哪些 Pod与 Qos 机制有关(1.8),1.9 以后的版本请看下文分解 只有当节点内存和磁盘资源 ...

最新文章

  1. 想高效办公,有什么好的多端协作平台推荐吗?
  2. python画三维温度散点图-matplotlib在python上绘制3D散点图实例详解
  3. 给定n,a求最大的k,使n!可以被a^k整除但不能被a^(k+1)整除。
  4. IE开发人员工具之实用功能讲解
  5. 解决fatal: No remote repository specified. Please, specify either a URL...
  6. 不要局限在完成当前飞鸽传书2009的简单思路上
  7. Tomcat为Cookie设置HttpOnly属性
  8. libz mysql_Docker和Mysql:libz.so.1:无法打开共享对象文件:权限被拒绝
  9. 查看数据库开了inodb_Mysql中查看表的类型InnoDB
  10. worker进程和task进程区别_swoole中使用task进程异步的处理耗时任务
  11. Android Studio链接外部手机模拟器问题
  12. Lucene 的 Scoring 评分机制
  13. 【语音信号处理四】DTW算法
  14. 深度学习AI美颜系列---美图秀秀AI美图之跨次元相机特效
  15. 系统架构师进阶(Believe Youself)
  16. Android 解析软件包时出现问题
  17. Prometheus+Alertmanager详细配置邮箱告警
  18. 绩效考核的九大困惑及其分析
  19. ssm毕设项目基于框架的众筹管理系统f5244(java+VUE+Mybatis+Maven+Mysql+sprnig)
  20. 从入学到现在,我de感悟

热门文章

  1. java jvm bind解决_java web项目启动的时候JVM_Bind,真的是tomcat端口被占用了吗?tomcat不同意...
  2. python导入mat文件_python读取并写入mat文件的方法
  3. c# 链接mongDB集群实战开发3
  4. R中因子分析的得分计算
  5. cad加载tiff影像插件_ENVI影像规则裁剪
  6. Leetcode-233-数字1的个数
  7. 心音与心电信号分析之一--6.26--心音信号数字滤波
  8. 【数据库原理实验(openGauss)】完整性控制
  9. Spring Boot文件目录介绍
  10. java 获取及修改系统变量