버전 비교

  • 이 줄이 추가되었습니다.
  • 이 줄이 삭제되었습니다.
  • 서식이 변경되었습니다.

l  Pod 배포 스케줄 개요 - NodeSelector 설명

cordon/uncordon

Affinity Rules(연계배포규칙) 설명 - Toleration 설명

목차
stylenone

...

1. nodeSelector

  • 파드를 배치할 노드를 선택하기 위해 노드에 정의된 레이블을 사용합니다.

  • 레이블은 Key-Value 쌍으로 이우러진 메타데이터입니다.

...

  • 파드가 특정 조건을 만족하는 노드에 스케줄링되도록 하는 기능이며, 크게 두 가지 유형으로 나눌 수 있습니다.

    • requiredDuringSchedulingIgnoredDuringExecution

      • 파드가 반드시 조건을 만족하는 노드에만 스케줄링됩니다.

      • 조건을 만족하는 노드가 없으면 파드는 스케줄링되지 않습니다.

    • preferredDuringSchedulingIgnoredDuringExecution

      • 조건을 만족하는 노드가 있다면 우선적으로 해당 노드에 스케줄링됩니다.

      • 조건을 만족하는 노드가 없으면 다른 노드에 스케줄링 될 수 있습니다.

코드 블럭
apiVersion: v1
kind: Pod
metadata:
  name: example-pod
spec:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: disktype
            operator: In
            values:
            - ssd
      preferredDuringSchedulingIgnoredDuringExecution:
      - weight: 1
        preference:
          matchExpressions:
          - key: region
            operator: In
            values:
            - east
  containers:
  - name: mycontainer
    image: nginx
  • requiredDuringSchedulingIgnoredDuringExecutiondisktypessd인 노드에만 파드를 스케줄링합니다.

  • preferredDuringSchedulingIgnoredDuringExecutionregioneast인 노드를 선호하지만, 해당 노드가 없으면 다른 노드에 스케줄링될 수 있습니다.

...

  • 다른 파드와 겹치지 않게 할 때 사용합니다.

  • 파드가 특정 노드에 스케줄링되지 않도록 설정하는 방법으로 크게 두 가지 유형이 있습니다.

    • requiredDuringSchedulingIgnoredDuringExecution

      • 파드가 반드시 조건을 만족하지 않는 노드에만 스케줄링됩니다.

    • preferredDuringSchedulingIgnoredDuringExecution

      • 조건을 만족하지 않는 노드에 우선적으로 스케줄링되지만, 필요하다면 다른 노드에 스케줄링될 수 있습니다.

코드 블럭
apiVersion: v1
kind: Pod
metadata:
  name: example-pod
spec:
  affinity:
    podAntiAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
      - labelSelector:
          matchExpressions:
          - key: app
            operator: In
            values:
            - myapp
        topologyKey: "kubernetes.io/hostname"
      preferredDuringSchedulingIgnoredDuringExecution:
      - weight: 1
        podAffinityTerm:
          labelSelector:
            matchExpressions:
            - key: app
              operator: In
              values:
              - otherapp
          topologyKey: "kubernetes.io/hostname"
  containers:
  - name: mycontainer
    image: nginx
  • requiredDuringSchedulingIgnoredDuringExecutionapp=myapp 라벨을 가진 파드와 같은 노드에 스케줄링되지 않도록 합니다.

  • preferredDuringSchedulingIgnoredDuringExecutionapp=otherapp 라벨을 가진 파드와 같은 노드에 스케줄링되지 않도록 선호하지만, 조건을 만족하지 않더라도 스케줄링될 수 있습니다.

...