자격증/CKA

[CKA] Udemy 59. Taints and Tolerations

14ben 2024. 7. 10. 23:40
728x90

노드와 파드 관계 및 배치 제한

  • taints와 tolerations 개념을 이해하기 어려울 수 있음.

taints와 tolerations의 개념 이해

  • 비유: 사람이 벌레 접근을 막기 위해 방충제를 뿌리는 상황을 상상해보자.
    • 방충제 = taint
    • 벌레의 반응 = toleration
  • 벌레는 냄새에 민감하여 접근하지 못함.
  • 일부 벌레는 냄새에 둔감하여 영향을 받지 않음.
  • 즉, 벌레가 사람에게 접근할 수 있는지는 방충제와 벌레의 반응에 따라 달라짐.

 

Kubernetes에서의 taints와 tolerations

  • 사람 = 노드, 벌레 = 파드
  • taints와 tolerations는 클러스터 보안과는 무관
  • 특정 파드를 특정 노드에 배치할 수 있도록 제한하는 데 사용됨.

 

예시 클러스터 설정

  • 세 개의 워커 노드가 있는 간단한 클러스터가 있음: 노드1, 노드2, 노드3.
  • 배치할 파드: A, B, C, D
  • 현재 제한 사항이 없으므로 스케줄러가 파드를 균등하게 배치함.

 

특정 노드에 대한 제한 설정

  • 특정 애플리케이션을 위한 전용 리소스를 노드1에 설정하고 싶음.
  • 노드1에 taint를 설정하여 모든 파드가 배치되지 않도록 함. 예: blue
  • 기본적으로 파드는 toleration이 없음.
  • 따라서 노드1에 taint blue를 설정하면, 파드가 배치되지 않음.
  • 특정 파드가 노드1에 배치되도록 허용하려면,
  • 해당 파드에 toleration을 추가해야 함.
  • 예: 파드 D에 toleration blue를 추가.

taints와 tolerations 적용 후 스케줄링

  • 스케줄러가 파드 A를 노드1에 배치하려 하지만 taint로 인해 노드2로 이동함.
  • 파드 B도 마찬가지로 노드3로 이동함.
  • 파드 C는 다시 노드2로 이동함.
  • 파드 D는 toleration이 있어 노드1에 배치됨.

 

taints와 tolerations 설정 방법

  • kubectl taint nodes 명령어를 사용하여 노드에 taint를 설정함.
  • 예: 노드1에 app=blue와 NoSchedule 효과를 설정함.
  • 파드 정의 파일의 spec 섹션에 tolerations 섹션을 추가하여 toleration을 설정함.
  • 예: app=blue와 NoSchedule 효과를 포함한 toleration을 설정함.

 

 

NoExecute taint 효과

  • 특정 노드를 전용 애플리케이션으로 설정하고,
  • 해당 노드에 NoExecute 효과를 설정함.
  • 파드 C는 노드1에서 축출되고, 파드 D는 toleration이 있어 계속 실행됨.

노드 제한과 파드 배치

  • taints와 tolerations는 노드가 특정 파드만 수용하도록 제한함.
  • 특정 파드를 특정 노드에 배치하려면 node affinity 개념을 사용해야 함.

  •  

마스터 노드에 대한 자동 taint 설정

  • Kubernetes 클러스터 설정 시, 마스터 노드에 자동으로 taint가 설정되어 파드가 배치되지 않음.
  • kubectl describe node 명령어로 마스터 노드의 taint를 확인할 수 있음.
  • 일반적으로 애플리케이션 워크로드를 마스터 노드에 배치하지 않는 것이 좋음.

 

 

 

 

728x90