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

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

文本并不是代码本身。文本只是在人类可读的模式和编译器可解析之间做了一个折中。代码的本质是具有复杂拓扑的数据结构,就像树或者电路一样。所以读代码的过程是在脑中构建出这个世界,所谓脑补是也。

阅读好的代码是一种享受。我最喜欢阅读的是redis的代码,用C写的,极端简洁但又威力强大。几句话就把最高效、精妙的数据结构完成出来,就像一篇福尔摩斯的侦探小说。在看的时候我常常想,如果让我实现这个功能,是否能像他这么简单高效?

以阅读k8s其中的一个模块,scheduler为例子,来讲讲我是怎么读代码的

从用户的角度出发,scheduler模块是干什么的?scheduler是k8s的调度模块,做的事情就是拿到pod之后在node中寻找合适的进行适配这么一个单纯的功能。实际上,我已经多次编译和构建这个程序并运行起来。在我的脑中,sheduler在整个系统中是这样的:

scheduler作为一个客户端,从apiserver中读取到需要分配的pod,和拥有的node,然后进行过滤和算分,最后把这个匹配信息通过apiserver写入到etcd里面,供下一步的kubelet去拉起pod使用。这样,立刻有几个问题浮现出来

问1.scheduler读取到的数据结构是怎么样的?(输入)

问2.scheduler写出的的数据结构是怎么样的?(输出)

问3.在前面的测试中,scheduler成为了系统的瓶颈,为什么?

问4.社区有人说增加缓存能有效提高scheduler的效率,他的思路是可行的吗?

读scheduler代码的整个经历

层1:cmd入口kubernetes\plugin\cmd\kube-scheduler\scheduler.go

这段代码比较短就全文贴出来了

package main

import (

"runtime"

"k8s.io/kubernetes/pkg/healthz"

"k8s.io/kubernetes/pkg/util"

"k8s.io/kubernetes/pkg/version/verflag"

"k8s.io/kubernetes/plugin/cmd/kube-sched

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值