K8s 调度器中 findNodesThatFit 实现
由点到线,由线到面。本文针对的k8s的版本是1.16.0 findNodesThatFit是scheduler调用predicate的实现,即对每个node调用一系列predicate方法,查看这个node是否满足这个predicate,并返回一个满足这些predicate的node的列表,后续会对这个列表执行priority操作。 博客最后有这个函数的完整代码。 podFits...
由点到线,由线到面。本文针对的k8s的版本是1.16.0 findNodesThatFit是scheduler调用predicate的实现,即对每个node调用一系列predicate方法,查看这个node是否满足这个predicate,并返回一个满足这些predicate的node的列表,后续会对这个列表执行priority操作。 博客最后有这个函数的完整代码。 podFits...
因为理论还没成型,很多知识点看着很零散;理解深度也不够,所以一些硬骨头啃不动。需要一个循序渐进的过程。 K8s 代码中有很多这样的调用,一看大概意思就是每隔一段时间就执行一个方法,直到stopChan关闭(或者收到数据)。但是不仔细看一下总觉得有点虚,决定看一下。下面代码取自pkg/kubelet/kubelet.go, 启动一个用于kill不需要的pod的goroutine。 /...
前言 打算分析一下调度器,将调度器拆成若干部分:调度主干,pod队列管理,缓存管理,调度算法等。本文分析下主干及pod调度队列管理。基于的k8s版本为1.9.3。 入口 代码文件:kubernetes/plugin/pkg/scheduler/scheduler.go 方法名字:func (sched *Scheduler) scheduleOne() 流程 取一个pod,从...
前言 打算开始写一些k8s的文章,已理解并记忆k8s的运行原理与设计模式,基于的k8s版本为1.9.3。 从volume expand controller开始是因为偶然发现这个控制器比较简单,麻雀虽小,五脏俱全,那就从这个开始吧。 入口 所有cm中的控制器都是在这里注册的,在后续文章会从宏观上分析整个cm的运行原理。 kubernetes/cmd/kube-controller-ma...