15.2. 配置反关联性
指定 OpenShift 为您的 Data Grid 集群调度 pod 的位置,以确保可用性。
流程
-
将
spec.affinity
块添加到您的Infinispan
CR。 - 根据需要配置反关联性策略。
-
应用您的
Infinispan
CR。
15.2.1. 反关联性策略配置
在 Infinispan
CR 中配置反关联性策略,以控制 OpenShift 调度 Data Grid 副本 pod。
拓扑键 | 描述 |
---|---|
| 在多个区域间调度 Data Grid 副本 pod。 |
| 将 Data Grid 副本 pod 调度到不同的 OpenShift 节点上。 |
在不同的 OpenShift 节点上调度 pod
如果您没有在 Infinispan
CR 中配置 spec.affinity
字段,则 Data Grid Operator 使用的反关联性策略如下:
spec: affinity: podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - weight: 100 podAffinityTerm: labelSelector: matchLabels: app: infinispan-pod clusterName: <cluster_name> infinispan_cr: <cluster_name> topologyKey: "kubernetes.io/hostname"
需要不同的节点
在以下示例中,如果不同的节点不可用,OpenShift 不会调度 Data Grid pod:
spec: affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchLabels: app: infinispan-pod clusterName: <cluster_name> infinispan_cr: <cluster_name> topologyKey: "topology.kubernetes.io/hostname"
注意
为确保可以将 Data Grid 副本 pod 调度到不同的 OpenShift 节点上,可用的 OpenShift 节点数量必须大于 spec.replicas
的值。
在多个 OpenShift 区间调度 pod
在调度 pod 时,以下示例首选多个区域,但如果无法在不同的区间调度 Data Grid 副本 pod:
spec: affinity: podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - weight: 100 podAffinityTerm: labelSelector: matchLabels: app: infinispan-pod clusterName: <cluster_name> infinispan_cr: <cluster_name> topologyKey: "topology.kubernetes.io/zone" - weight: 90 podAffinityTerm: labelSelector: matchLabels: app: infinispan-pod clusterName: <cluster_name> infinispan_cr: <cluster_name> topologyKey: "kubernetes.io/hostname"
需要多个区
以下示例仅在调度 Data Grid 副本 pod 时使用区策略:
spec: affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchLabels: app: infinispan-pod clusterName: <cluster_name> infinispan_cr: <cluster_name> topologyKey: "topology.kubernetes.io/zone"