IT/CKA

CKA 준비과정 - Scheduling (3) / Taints and Tolerations

Primes 2023. 5. 14. 15:04
728x90

Taints ?

- 비유하자면, 사람이 벌레에게 물리지 않기위해 몸에 해충제를 뿌리는 것과 같다.

- Node에 Taint를 설정함으로써, pod가 노드에 할당되지 않도록 막는다.

- 완전히 규제를 하는 것은 아니기 때문에, Scheduling 상 할당이 될 수도 있다. (설정으로 조정가능)

 

 

 

Tolerations?

- 위의 이미지에서, Taint를 위와 같이 설정하였을 때, D에게 하는 작업이 Toleration 이다.

- D는 Node 1에 할당될 수 있도록 작업을 거쳤다. 따라서 D만 할당될 수 있다.

 

Node에 Taint 부여하기

# kubectl taint nodes node-name key=value:taint-effect

=> taint-effect : 이 taint 를 설정하였고, 이 taint를 무시하고 할당된 pod에 어떤 영향을 줄지 결정. 3개의 영향을 설정할 수 있다.

* NoSchedule : taint(규제)에 대해 toleration(저항) 이 없다면 스케줄 되지 않는다.

* PreferNoSchedule : 되도록 스케줄되지 않도록 하지만, 보장되지는 않는다.

* NoExecute : taint에 대해 toleration이 없다면 스케줄되지 않으며, 이미 할당된 pod가 있다면 삭제된다. (즉, 저항이 없으면 실행 불가함)

 

Node에 Taint를 부여하고, pod에 toleration을 부여하는 것은 위와같이 진행할 수 있다.

이 때 주의해야할 점은, pod에 toleration 부여 시, "" 를 꼭 붙여야 한다.(더블 코드)

 

★ 주의해야할 점은, Taints와 Tolerations은 특정 노드로 배치를 하도록 의도를 하는 것은 아니다. 해당 노드에 특정한 노드가 배정되지 않는 것에 초점을 맞추어야 한다.

 

위 이미지에서, D는 Node 1,2,3 에 모두 할당이 될 수 있다는 의미이다. 단, A/B/C 는 2와 3에만 할당 가능하다.

 

 

참고 사항 - Master Node

Master Node에는 Pod 생성이 불가하다. 이는 Taints 설정이 존재하기 때문.

반응형