理解一下 k8s的调度。首先,明白一件事,我们使用k8s基本上都是基于 yaml文件来的,这个过程像极了伸手给妈妈要钱。
妈,我想买乐高。
妈,我想吃冰淇淋。
yaml就像是一个伸手的过程。剩下的事交给大人操心。
# # 简单了解一下k8s的架构
下边的图是一个k8s的集群架构。其实这个图有点不合适,不合适的点在于橙色的圈,此时不能代表一个Pod,应该是一个 yaml,它即将会成为一个 Pod,但是现在还不是。
# # 接下来开始调度k8s调度过程
基于上上边的架构图,开始
第一步,将这个申请yaml交给 apiServer
第二步:对这个yaml进行校验,看有没有什么错误,所以到了controller
第三步:校
验通过后,会创建出来一个 Pod
。 pod放在ApiServer ,但此时生成的 pod,它的
nodeName 是空的
,并且它的 phase 是 Pending 状态。在生成了这个 pod 之后,
kube-Scheduler
以及
kubelet
都能
watch
到这个 pod 的生成事件,
kube-Scheduler
发现这个 pod 的 nodeName 是空的之后,会认为这个 pod 是处于未调度状态。
第四步:
就是schedule根据算法,来选择一个node,去完成调度
。吧这个pod 给node去处理。此时前边创建的这个Pod没有nodeName,现在被分配了以后,就有名字了。这个举个栗子:旺财家里比较空闲,一直想在家里样一只狗,所以在宠物所登记,说它可以养一直狗在家里 ,如果碰到合适的就联系他。二哈是一只狗,它被生出来,然后没有主人,然后被人领养了,在被领养以后,也有了主人的名字,叫旺财。
此时,二哈有了它的去处,所以一个领养的过程就结束了。