4.3.2. Pod アフィニティールールの設定
以下の手順は、ラベルの付いた Pod と Pod のスケジュールを可能にするアフィニティーを使用する 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: runAsNonRoot: true seccompProfile: type: RuntimeDefaultPod を作成します。
$ oc create -f <pod-spec>.yaml
他の Pod の作成時に、以下のパラメーターを設定してアフィニティーを追加します。
以下の内容を含む YAML ファイルを作成します。
apiVersion: v1 kind: Pod metadata: name: security-s1-east # ... spec: affinity:1 podAffinity: requiredDuringSchedulingIgnoredDuringExecution:2 - labelSelector: matchExpressions: - key: security3 values: - S1 operator: In4 topologyKey: topology.kubernetes.io/zone5 # ...- 1
- Pod のアフィニティーを追加します。
- 2
requiredDuringSchedulingIgnoredDuringExecutionパラメーターまたはpreferredDuringSchedulingIgnoredDuringExecutionパラメーターを設定します。- 3
- 満たす必要のある
keyおよびvaluesを指定します。新規 Pod を他の Pod と共にスケジュールする必要がある場合、最初の Pod のラベルと同じkeyおよびvaluesパラメーターを使用します。 - 4
operatorを指定します。演算子はIn、NotIn、Exists、またはDoesNotExistにすることができます。たとえば、演算子Inを使用してラベルをノードで必要になるようにします。- 5
topologyKeyを指定します。これは、システムがトポロジードメインを表すために使用する事前にデータが設定された Kubernetes ラベル です。
Pod を作成します。
$ oc create -f <pod-spec>.yaml