Written on
·
936
1
Answer 1
1
안녕하세요.
일반적으로 pod를 어떤 노드에 배치할지에 대한 기능으로 nodeSeletor나 nodeAffinity를 쓰면 됩니다.
그리고 taint에 스케줄링의 성격이 있긴 하지만, 주로 사용되는 목적은 노드 관리입니다.
운영자 입장에서 업그레이드나 노드 장애, 특정 노드에 접근 제한을 하기 위한 용도라고 보시면 되요.
예를들어, 특정 노드에 업그레이드 작업을 할때, 갑자기 node가 shutdown되고 그러면 그위에 pod가 갑자기 죽어버립니다. 그러면 일시적인 서비스 장애가 생기고요. 이때 drain이라는 기능을 통해 pod들을 다른 node에 옮겨 놓고는데, 이 기능은 작업할 node에 taint를 걸어놓는 겁니다.
그럼 taint의 기능으로 해당 node위에 pod들은 다른 node로 옮겨져요.
taint와 tolreration 에 스케줄링의 기능도 있긴 하지만, 주로 사용되는 케이스는 노드 작업을 위해서라고 보시면 됩니다.
---
pod에 not-ready taint는 default로 적용되는 속성입니다.
node를 조회할때 tolerations이 나오지 않지만, node에 장애가 생겼을때, kubernetes가 node한테 tolerations을 생성해줍니다.
한번 node1을 shutdown시킨 후 조금 있다가 node detail 명령으로 해당 노드를 조회해보세요.