胡伟煌

个人博客

置顶 [随笔] 总得写点什么

总得写点什么​  好像每一个拥有技术博客的人一般会在开篇写一篇关于为什么自己要建一个技术博客。就好比程序员在学一门新的语言,第一段代码总要写一个Hello World,以表示对这世界的尊重。 ​  距离我创建独立域名的博客已经一年了,那时候还选择在10月24号这个程序员特殊的节日发布,并发表朋友圈说自己拥有了一个独立的自居地,可以写点技术文章或关于心情的东西,算是把自己“开源”出去了。然后一......

置顶 [随笔] 坐井观天

坐井观天 ​  慢慢长大,有时候才会发现有些事情是不可为的。 ​  曾经在很小的时候,我发现我自己是会思考的,我以为全世界只有我一个人会思考,当时觉得很有意思。后来更大一些,也就更懂一些,知道了自己是在一个群体中的,这个群体是我可以接触到或感受到的范围,这个群体每个人都是独立的个体,而我只是其中一个。 ​  小学,初中,高中,大学,我们就这样被一步一步地筛选上来,每个人像是一个产品又不像是一......

置顶 [随笔] 胡思乱想

胡思乱想​  最近又开始乱想了,走在路上脑海都有莫名的思绪在飘,而当你静下来的时候又一溜烟跑没了,都不知道去哪里找。2018年还有几天就要结束了,好像来得太快了些。 ​  回想自己刚毕业的时候,总觉得还年轻,有试错的资本,比大多数人幸运的是比较早的找到了方向,不用挣扎在换方向和不得不做自己不喜欢的事情。毕竟挺多人陷入这样的一个循环:做着自己不喜欢的事情,而又不能从中得到提升,得不到提升就无法......

置顶 kube-scheduler源码分析(六)之 抢占逻辑

kube-scheduler源码分析(六)之 preempt 以下代码分析基于 kubernetes v1.12.0 版本。 本文主要分析调度中的抢占逻辑,当pod不适合任何节点的时候,可能pod会调度失败,这时候可能会发生抢占。抢占逻辑的具体实现函数为Scheduler.preempt。 1. 调用入口当pod不适合任何节点的时候,可能pod会调度失败。这时候可能会发生抢占。 sched......

置顶 kube-scheduler源码分析(五)之 优选策略

以下代码分析基于 kubernetes v1.12.0 版本。 本文主要分析优选策略逻辑,即从预选的节点中选择出最优的节点。优选策略的具体实现函数为PrioritizeNodes。PrioritizeNodes最终返回是一个记录了各个节点分数的列表。 1. 调用入口genericScheduler.Schedule中对PrioritizeNodes的调用过程如下: 此部分代码位于pkg......

置顶 kube-scheduler源码分析(四)之 预选策略

以下代码分析基于 kubernetes v1.12.0 版本。 本文主要分析调度逻辑中的预选策略,即第一步筛选出符合pod调度条件的节点。 1. 调用入口预选,通过预选函数来判断每个节点是否适合被该Pod调度。 genericScheduler.Schedule中对findNodesThatFit的调用过程如下: 此部分代码位于pkg/scheduler/core/generic_sc......

置顶 kube-scheduler源码分析(三)之 调度流程

scheduleOne 以下代码分析基于 kubernetes v1.12.0 版本。 本文主要分析/pkg/scheduler/中调度的基本流程。具体的预选调度逻辑、优选调度逻辑、节点抢占逻辑待后续再独立分析。 scheduler的pkg代码目录结构如下: 123456789101112131415161718192021222324252627scheduler├── algorith......

置顶 kube-scheduler源码分析(二)之 调度算法

以下代码分析基于 kubernetes v1.12.0 版本。 此部分主要介绍调度中使用的各种调度算法,包括调度算法的注册部分。注册部分的代码主要在/pkg/scheduler/algorithmprovider中,具体的预选策略和优选策略的算法实现在/pkg/scheduler/algorithm中。 1. ApplyFeatureGates注册调度算法的调用入口在SchedulerC......

置顶 kube-controller-manager源码分析(三)之 Informer机制

kube-controller-manager源码分析(三)之 Informer机制 以下代码分析基于 kubernetes v1.12.0 版本。 本文主要分析k8s中各个核心组件经常使用到的Informer机制(即List-Watch)。该部分的代码主要位于client-go这个第三方包中。 此部分的逻辑主要位于/vendor/k8s.io/client-go/tools/cache包......

置顶 kubelet源码分析(五)之 syncPod

kubelet源码分析(五)之 syncPod 以下代码分析基于 kubernetes v1.12.0 版本。 本文主要分析kubelet中syncPod的部分。 1. managePodLoopmanagePodLoop通过读取podUpdateschannel的信息,执行syncPodFn函数,而syncPodFn函数在newPodWorkers的时候赋值了,即kubelet.sync......