👨💻
nodeAffinityとpodAffinity
podnoAffinityとnodeAffinityについて
- nodeAffinity
- 特定のNodeのlabelで指定し、特定のNode上にPodをscheduleする機能
- nodeAffinityはあくまでNodeをベースにしたスケジューリング機能
manifestは下記のような感じ
下記manifestで作成した場合は、app=sample-appのlabelが付与されてるNodeにpodがdeployされる
apiVersion: v1
kind: Pod
metadata:
name: zenn
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: app
operator: In
values:
- sample-app
containers:
- name: zenn
image: nginx
- podAffinity
-
Node上で起動している特定のPodのlabelを指定し、特定のPodと同じNode上にscheduleする機能
-
podAffinityはPodをベースに対応スケジューリング機能
-
podAffinityのメリット
- Pod間の通信のレイテンシーが下がる。
- Nodeの機能差が少ない場合には、Nodeを意識せずPodベースでscheduleできる
-
podAffinityを使用したmanifest
下記manifestで作成した場合は、app=sample-appのlabelが付与されてるPodと同じzone上へscheduleされる
apiVersion: v1
kind: Pod
metadata:
name: zenn
spec:
affinity:
podAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: app
operator: In
values:
- sample-app
topologyKey: topology.kubernetes.io/zone
containers:
- name: zenn
image: nginx
Discussion