15.2. anti-affinity の設定
OpenShift が、Data Grid クラスターの Pod をスケジュールする場所を指定し、可用性を確保します。
手順
-
spec.affinityブロックをInfinispanCR に追加します。 - 必要に応じて anti-affinity ストラテジーを設定します。
-
InfinispanCR を適用します。
15.2.1. anti-affinity ストラテジーの設定 リンクのコピーリンクがクリップボードにコピーされました!
Infinispan CR で anti-affinity ストラテジーを設定し、OpenShift が Data Grid レプリカ Pod をスケジュールする場所を制御します。
| トポロジーキー | 説明 |
|---|---|
|
| Data Grid のレプリカ Pod を複数のゾーンにまたがってスケジュールします。 |
|
| さまざまな OpenShift ノードで Data Grid レプリカ Pod をスケジュールします。 |
さまざまな OpenShift ノードでの Pod のスケジュール
以下は、Infinispan CR に spec.affinity フィールドを設定しない場合に、Data Grid Operator が使用する anti-affinity ストラテジーです。
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 レプリカ Pod をスケジュールできるようにするには、利用可能な OpenShift ノードの数は spec.replicas の値よりも大きくなければなりません。
複数の OpenShift ゾーンにまたがった Pod のスケジュール
以下の例では、Pod のスケジュール時に複数のゾーンを優先しますが、ゾーンをまたいでスケジュールできない場合は、さまざまな OpenShift ノードで 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"