15.2. 配置反关联性
指定 OpenShift 为 Data Grid 集群调度 pod 的位置,以确保可用性。
流程
-
将
spec.affinity块添加到InfinispanCR。 - 根据需要配置反关联性策略。
-
应用
InfinispanCR。
15.2.1. 反关联性策略配置 复制链接链接已复制到粘贴板!
在 Infinispan CR 中配置反关联性策略,以控制 OpenShift 调度 Data Grid 副本 pod 的位置。
| 拓扑键 | 描述 |
|---|---|
|
| 在多个区域间调度 Data Grid 副本 pod。 |
|
| 将 Data Grid 副本 pod 调度到不同的 OpenShift 节点上。 |
将 pod 调度到不同的 OpenShift 节点上
如果没有在 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"
为确保您可以在不同的 OpenShift 节点上调度 Data Grid 副本容器集,可用的 OpenShift 节点数量必须大于 spec.replicas 的值。
在多个 OpenShift 区域间调度 pod
以下示例在调度 pod 时首选多个区域,但如果无法在区间调度,但无法在不同的 OpenShift 节点上调度数据网格副本 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"