10分钟搞懂K8S的亲和与反亲和调度

本文主要快速讲解Kube.NETes的亲和性调度 和 反亲和性调度,通过理论结合实际的方式,让理解更深刻 。
【10分钟搞懂K8S的亲和与反亲和调度】首先来个一句话总结:亲和性调度就像关系亲密的闺蜜,你去哪儿我也去哪儿 。反亲和性调度就像赌气的两个孩子,赌气永远不在一起玩儿 。更多解释和实战详见下文 。花10分钟看到最后,你肯定会有收获 。
1、调度Pod的主要方式Pod调度到指定Node的方式主要有4种:

  • nodeName调度:直接在Pod的yaml编排文件中指定nodeName,调度到指定name的节点上 。
  • nodeSelector调度:直接在Pod的yaml编排文件中指定nodeSelector,调度到带有指定label的节点上 。
  • 污点(TAInts)和容忍度(Tolerations)调度:详见文章《5分钟搞懂K8S的污点和容忍度(理论+实战)》 。主要通过在Node节点上打污点 , 然后在Pod的yaml编排文件中配置容忍度,来实现调度 。
  • 亲和-反亲和调度:见下文讲解 。
2、为什么需要亲和调度有了nodeName调度nodeSelector调度污点(Taints)和容忍度(Tolerations)调度,为什么还需要亲和-反亲和调度呢?
为了更灵活更复杂的调度方式 。比如有些场景想把2个Pod 调度到一台节点上,有的场景为了隔离性高可用性想把2个Pod分开到不同节点上,或者有的场景想把Pod调度到指定的一些特点节点上 。
3、亲和调度的前置概念(重要)