image.png

k8s 调度是比较核心的功能,由多个组件合作完成。

用户创建 pod 对象后,先会进入 pending 状态,等待调度器调度。

  1. kube-scheduler watch 到新建的 Pod
  2. kube-scheduler 调用 scheduleOne 进行具体调度
  3. predict 筛选满足 scheduler 配置的调度算法的条件的节点
  4. 如果 Pod 配置了持久化,kube controller manager 调用 AssumePodVolumes 校验节点是否满足 pvc 指定的持久化条件
  5. 遍历上述筛选出的节点,打分,排序
  6. kube controller manager 中的 scheduler binder 组件调用 BindPodVolumes 更新 pvc 状态
  7. kube controller manager 中的 pv controller watch 到 pvc 更新后触发对应的 pv plugin provisioner
  8. pv plugin provisioner 执行 Provision
  9. pv 绑定完后,scheduler 执行 pod 和 node 的绑定
  10. 完成

FingerLiu
562 声望28 粉丝

先广后精。Explore the whole world,and then do one thing but do it best.