Post

Section 3-2. Taints, Tolerations

udemy의 Certified Kubernetes Administrator (CKA) with Practice Tests 강의 및 쿠버네티스 인 액션 (마르코 룩샤)를 참고하여 정리한 글입니다.

Section03. Scheduling

  • Taints는 노드에 설정하며, Toleration은 Pod에 설정한다.

Taints (노드 설정)

  • Taint의 구성요소는 <key>=<value>:<effect> 형태로 정의되어 노드에 적용된다.
  • 다중 노드 클러스터의 마스터 노드는 테인트 되어있어 컨트롤 플레인 파드만 배포될 수 있도록 기본 설정이 되어있다.
    1
    2
    3
    4
    5
    6
    7
    
     $ kubectl describe node master
    
      Name:               master
      Roles:              control-plane
      ...
      Taints:             node-role.kubernetes.io/control-plane:NoSchedule
                          node-role.kubernetes.io/master:NoSchedule
    
    • 마스터 노드의 Taint는 다음과 같다.
      • key : node-role.kubernetes.io/master
      • value = null
      • effect : NoSchedule

Taint Effect

  • Taint가 어떤 Pod을 배치하지 않을 것인지를 정의할 수 있다.
  • NoSchedule, PreferNoSchedule, NoExecute와 같은 세 가지 Taint Effect가 있다.
  • NoSchedule
    • 노드가 테인트를 허용하지 않을 경우 파드가 노드에 스케줄 되지 않음.
    • Toleration이 일치하는 경우에만 배포된다.
  • PreferNoSchedule
    • NoSchedule의 소프트 버전.
    • 스케줄러가 노드에 스케줄을 안 하려고 하지만 다른 곳에서 스케줄 할 수 없는 경우 스케줄을 진행
  • NoExcute
    • 노드에서 실행 중인 파드에도 영향을 미침.
    • NoExcute 테인트를 톨러레이션 하지 않는 모든 파드가 제거된다

Tolerations (파드 설정)

  • 테인트 처리가 되어있는 노드에 일치하는 톨러레이션을 파드가 가지고 있다면 그 노드에 파드가 배포될 수 있다. 톨러레이션 정의는 yaml 파일에서 파드의 spec에 정의한다.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
      apiVersion: v1
      kind: Pod
      metadata:
      name: nginx
      labels:
          env: test
      spec:
      containers:
      - name: nginx
          image: nginx
          imagePullPolicy: IfNotPresent
      tolerations:
      - key: "example-key"
          operator: "Exists"
          effect: "NoSchedule"
    
    1
    2
    3
    4
    
      $ kubectl describe po nginx
      Name:         nginx
      ...
      Tolerations:                 example-key:NoSchedule op=Exists
    
  • operator를 지정하지 않으면 기본값은 Equal이다.
    • Exists : 이 경우는 value를 지정하지 않는다.
    • Equal : value를 지정한다.
  • 톨러레이션은 key와 effect가 동일한 경우 테인트와 일치한다.
This post is licensed under CC BY 4.0 by the author.