👨‍💻

nodeAffinityとpodAffinity

2022/02/28に公開

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