쿠버네티스 테인트(Taints)와 톨러레이션(Tolerations) 개념과 설정

ZER0·2022년 10월 11일
0

Kubernetes

목록 보기
10/39
post-thumbnail

1. 테인트와 톨러레이션 개념

  • 노드 스케줄링을 임의로 핸들링하기 위한 방법 중 하나
  • 테인트가 설정된 노드에는 톨러레이션이 적용된 파드만 배포 가능
  • 테인트는 일종의 '자물쇠' 역할
  • 톨러레이션은 자물쇠를 푸는 일종의 '열쇠' 역할
  • 착각하기 쉬운 점은 톨러레이션이 적용됐다고 무조건 테인트가 적용된 노드로 배포되는 것은 아니며, 테인트가 적용되지 않은 일반 노드로 배포될 가능성도 존재
  • DB 등 보안이 필요한 노드에 테인트를 적용하여 의도치 않은 파드 배포를 방지하는 형태로 활용 가능

2. 테인트 적용

  • 테인트 적용
	kubectl taint node [노드_이름] [테인트_키]=[테인트_값]:[테인트_효과]
  • 테인트 값 확인
	kubectl get node [노드_이름] -o yaml | grep -i taint -F5
    or 
    kubectl describe node [노드_이름] | grep -i taint
  • 테인트 해제
	kubectl taint node [노드_이름] [테인트_키]:[테인트_효과]-
    or
    kubectl taint node [노드_이름] [테인트_키]-
  • 테인트 효과
    • NoSchedule : 파드에 톨러레이션이 적용되어 있지 않은 경우 해당 노드에 배포할 수 없음. 톨러레이션을 적용해야만 해당 노드에 배포 가능
    • PreferNoSchedule : NoSchedule과 동일하지만, 스케줄러가 판단하기에 할당할 수 있는 노드가 더 이상 없을 경우 어쩔 수 없이 테인트를 무시하고 해당 노드에 배포
    • NoExecute : NoSchedule과 동일하지만, 테인트를 적용하기 이전부터 해당 노드에 배포되어 존재하는 파드 중 톨러레이션이 없는 파드를 다른 노드로 내쫓음

3. 톨러레이션 적용

  • yaml 파일에 톨러레이션 설정
  • 톨러레이션을 적용하지 않은 경우 파드 배포 결과 확인(w2-k8s 노드에 테인트 적용)
  • 톨러레이션을 적용한 경우 파드 배포 결과 확인(w2-k8s 노드에 테인트 적용)

4. 참고

  1. https://www.udemy.com/course/certified-kubernetes-administrator-with-practice-tests/
profile
Security Compliance Engineer

0개의 댓글