Kubernetes では、ノード アフィニティ (ノード アフィニティ) を使用して、ポッドとノード間の関連付けルールを指定し、ポッドをスケジュールする必要があるノードを決定できます。
-
ノード アフィニティ タイプ:
requiredDuringSchedulingIgnoredDuringExecution
: ポッドはノード アフィニティ ルールを満たす必要があり、満たさない場合はスケジュールできません。preferredDuringSchedulingIgnoredDuringExecution
: ポッドはノード アフィニティ ルールを満たす傾向がありますが、必須ではありません。
-
ポッドの YAML ファイルでノード アフィニティを使用します。
- ポッドの YAML ファイルで、
affinity
フィールドを使用してノード アフィニティ ルールを指定します。 - フィールドでは
affinity
、nodeAffinity
サブフィールドを使用してノード アフィニティ ルールを定義します。
- ポッドの YAML ファイルで、
ポッドの YAML ファイルでノード アフィニティを使用する方法を示す例を次に示します。
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: my-container
image: nginx:latest
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: env
operator: In
values:
- production
上の例では、nodeAffinity
フィールドは必須のノード アフィニティ ルールを定義します。つまり、ポッドはenv=production
ラベルを持つノード上でスケジュールされる必要があります。
ノード アフィニティ ルールでは、他の演算子 ( NotIn
、など) や複数の一致式を使用して、より複雑なルールを定義できることExists
に注意してください。DoesNotExist
ノード アフィニティを使用すると、ノードのラベルと条件に基づいてポッドを特定のノードにスケジュールして、アプリケーションのニーズを満たしたり、特定のノード上のリソースや環境を活用したりできます。