4.3.3. Pod アンチアフィニティールールの設定
以下の手順は、ラベルの付いた Pod と Pod のスケジュールの禁止を試行するアンチアフィニティーの preferred (優先) ルールを使用する Pod を作成する 2 つの Pod の単純な設定を示しています。
注記
アフィニティーをスケジュールされた Pod に直接追加することはできません。
手順
Pod 仕様の特定のラベルの付いた Pod を作成します。
以下の内容を含む YAML ファイルを作成します。
apiVersion: v1 kind: Pod metadata: name: security-s1 labels: security: S1 spec: securityContext: runAsNonRoot: true seccompProfile: type: RuntimeDefault containers: - name: security-s1 image: docker.io/ocpqe/hello-pod securityContext: allowPrivilegeEscalation: false capabilities: drop: [ALL]Pod を作成します。
$ oc create -f <pod-spec>.yaml
他の Pod の作成時に、以下のパラメーターを設定します。
以下の内容を含む YAML ファイルを作成します。
apiVersion: v1 kind: Pod metadata: name: security-s2-east # ... spec: # ... affinity:1 podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution:2 - weight: 1003 podAffinityTerm: labelSelector: matchExpressions: - key: security4 values: - S1 operator: In5 topologyKey: kubernetes.io/hostname6 # ...- 1
- Pod のアンチアフィニティーを追加します。
- 2
requiredDuringSchedulingIgnoredDuringExecutionパラメーターまたはpreferredDuringSchedulingIgnoredDuringExecutionパラメーターを設定します。- 3
- preferred (優先) ルールの場合、ノードの重みを 1 - 100 で指定します。最も高い重みを持つノードが優先されます。
- 4
- 満たす必要のある
keyおよびvaluesを指定します。新規 Pod を他の Pod と共にスケジュールされないようにする必要がある場合、最初の Pod のラベルと同じkeyおよびvaluesパラメーターを使用します。 - 5
operatorを指定します。演算子はIn、NotIn、Exists、またはDoesNotExistにすることができます。たとえば、演算子Inを使用してラベルをノードで必要になるようにします。- 6
topologyKeyを指定します。これは、システムがトポロジードメインを表すために使用する事前にデータが設定された Kubernetes ラベル です。
Pod を作成します。
$ oc create -f <pod-spec>.yaml