亲和力
nodeAffinity
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: bpx/node
operator: Exists
nodeAffinity 和 podAntiAffinity 都是 Kubernetes 中用于调度和部署 Pod 的机制,但它们的作用不同。
nodeAffinity 是用于指定 Pod 应该调度到哪些节点上运行。可以使用 nodeAffinity 来保证 Pod 运行在某些特定的节点上,或者避免 Pod 运行在某些节点上。它可以使用节点标签或者其他属性来定义节点的选择条件。
podAntiAffinity 是用于指定 Pod 不能与哪些 Pod 部署在同一个节点上。这样可以避免在同一个节点上部署相同的应用程序或服务,从而提高应用程序的可用性和鲁棒性。
因此,nodeAffinity 和 podAntiAffinity 都是非常有用的机制,但它们的使用场景不同。如果需要控制 Pod 运行的节点,应该使用 nodeAffinity;如果需要避免在同一个节点上部署相同的应用程序或服务,应该使用 podAntiAffinity。
podAntiAffinity
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- podAffinityTerm:
labelSelector:
matchLabels:
DBType: mysql
Type: Database
topologyKey: kubernetes.io/hostname
weight: 100
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchLabels:
io.cilium/app: operator
topologyKey: kubernetes.io/hostname