从零开始入门 K8s | 调度器的调度流程和算法介绍(11)

  • PodToleratesNodeTaints:校验 Node 的 Taints 是否被 Pod Tolerates 包含;

  • PodFitsHostPorts:校验 Pod 上的 Container 声明的 Ports 是否正在被 Node 上已经分配的 Pod 使用;

  • MatchNodeSelector: 校验 Pod.Spec.Affinity.NodeAffinity 和 Pod.Spec.NodeSelector 是否与 Node 的 Labels 匹配 。

  • Pod 和 Pod 匹配相关

    MatchinterPodAffinity:主要是 PodAffinity 和 PodAntiAffinity 的校验逻辑 , 这里面最大的复杂度是在于 Affinity 里面的 PodAffinityTerm 描述支持的 TopologyKey(可以表示在 node/zone/az 等拓扑结构上) , 这个其实是一个性能杀手 。

    Pod 打散相关

    • EvenPodsSpread

    • CheckServiceAffinity

    EvenPodsSpread

    这是一个新的功能特性 , 首先来看一下 EvenPodsSpread 中 Spec 描述:

    推荐阅读