亲和性和反亲和性是运行时调度策略,主要包括nodeAffinity(主机亲和性)、podAffinity(pod亲和性)、podAntiAffinity(pod反亲和性)三类。
- nodeAffinity:用于规定pod可以部署在哪个node或者不能部署在哪个节点上。解决pod和主机的问题。
- podAffinity:用于规定pod可以和哪些pod部署在同一拓扑结构下。
- podAntiAffinity:用于规定pod不可以和哪些pod部署在同一拓扑结构下,与podAffinity一起解决pod和pod之间的关系。
三种Affinity使用时都有三种规则可以设定:
- RequiredSchedulingRequiredExecution:该规则表示,在首次调度时一定要满足相应的Affinity规则,如果没有满足条件的node将不会进行调度。在pod运行过程中如果不再满足相应的Affinity规则,会进行重新调度。
- RequiredSchedulingIgnoredExecution:该规则表示,在首次调度时需要满足相应的Affinity规则,如果没有满足条件的node将不会进行调度。在后续pod的运行过程中不在检查这些规则是否满足。
- PreferedSchedulingIgnoredExecution:该规则表示,在首次调度时尽量满足相应的Affinity规则,如果没有满足要求的node也会进行调度。后续pod的运行过程中不再检查是否满足。