k8s 调度 Affinity

参考链接:

https://www.cnblogs.com/centos-python/articles/10886525.html

https://blog.csdn.net/tiger435/article/details/78489369

https://www.ziji.work/kubernetes/k8s-affinity.html

# 三种亲和性:

nodeAffinity(主机亲和性),podAffinity(POD亲和性)以及podAntiAffinity(POD反亲和性)

1)nodeAffinity 

主要解决POD要部署在哪些主机,以及POD不能部署在哪些主机上的问题,处理的是POD和主机之间的关系。

2)podAffinity 

主要解决POD可以和哪些POD部署在同一个拓扑域中的问题(拓扑域用主机标签实现,可以是单个主机,也可以是多个主机组成的cluster、zone等。)

3)podAntiAffinity

主要解决POD不能和哪些POD部署在同一个拓扑域中的问题。它们处理的是Kubernetes集群内部POD和POD之间的关系。

# 示例:

1)podAffinity:

 2)podAntiAffinity

  • requiredDuringSchedulingIgnoredDuringExecution,硬约束,一定要满足,效果同NodeSelector,Pod只能调度到具有kubernetes.io/hostname=k8s-node01标签的Node节点。
  • preferredDuringSchedulingIgnoredDuringExecution,软约束,不一定满足,k8s调度会尽量不调度Pod到具有kubernetes.io/hostname=k8s-node01或kubernetes.io/hostname=k8s-node02标签的Node节点。
  • nodeSelectorTerms可以定义多条约束,只需满足其中一条。
  • matchExpressions可以定义多条约束,必须满足全部约束。
原文地址:https://www.cnblogs.com/wangjq19920210/p/15076701.html