본문 바로가기
INFRA/Operation

쿠버네티스 이론STEP11 Scheduling 1 Taint & Toleration

by BTC_김쿼카 2022. 9. 27.

ABTCEFG♪  안녕하세요, 여러분!

BTC_김쿼카입니다.

 

쿠버네티스의 스케줄링에 대해 알아보는 첫번째 시간! 오늘은 taint와 toleration에 대해 알아보도록 해요.

 


 

taint

  • Node에 적용되는 속성으로, Node에 스케줄링될 Pod를 제한할 수 있는 기능을 제공함
  • 노드마다 설정 가능하며, 설정한 노드에는 pod가 스케줄 되지 않음

 

taint 옵션

  • NoSchedule
    toleration이 없으면 pod가 스케줄되지 않음
    기존에 실행되던 pod에는 적용되지 않으며 앞으로 실행될 Pod에 대해서만 스케줄링 제한
  • PreferNoSchedule
    toleration이 없으면 pod가 스케줄되지 않음
    기존 실행 중인 Pod에는 적용되지 않으며, 앞으로 생성될 Pod도 스케줄링 되는 것을 선호하진 않지만 해당 Node 밖에 스케줄링 될 곳이 없다면 스케줄링을 허용함.
  • NoExecute
    toleration이 없으면 pod가 스케줄되지 않음
    앞으로 실행될 Pod 스케줄링은 물론 기존에 실행되던 pod도 toleration이 없으면 Node에서 제거함

 

노드에 taint를 설정하는 명령어 : kubectl taint nodes $nodename $key=$value:$option

kubectl taint nodes node1 key1=value1:NoSchedule

# taint 확인
kubectl describe nodes node1

 


toleration

  • Pod에 설정하며, taint를 무시할 수 있음
  • 특정 taint를 용인하는 toleration 설정을 가진 pod는 해당 Node에 할당 가능함

 

toleration 옵션

  • key, value, effect에 원하는 값 지정 가능함
  • operator 값에는 equal, exists 가 있음
    Equal은 키,값, 효과가 모두 같은지 확인을 하고, Exists는 값을 필요로 하지 않음

 

tolerations:
- operator: Exists

 

어떤 종류의 taint가 걸려있던 상관없이 스케줄링됨

tolerations:
- key: key1
  operator: Exists

 

키가 key1인 모든 taint에 적용됨

tolerations:
- key: role
  operator: Equal
  value: system
  effect: NoShedule

 

role=system:NoSchedule Taint에 적용됨

 

댓글