-
k8s taints & toleration개발 2025. 11. 14. 14:18
### 서론
k8s에는 node group이 존재 한다.
node group은 작업을 수행 할 pod들이 올라 가게 될 컴퓨팅 자원을 관리 하는데, 작업의 성격에 따라 다른 node group을 선택 해야 할 경우가 많다.
예를들어, 나의 경우 현재 운영중인 인프라와 무관하게 새로 컴퓨팅 자원을 빠르게 사용하고 종료 해야 하는 경우 였는데, 기존 자원에 영향을 끼치지 않게 새로운 노드 그룹을 만들었고, label을 추가 해서 운영 하려고 했다.
### 문제
내가 돌리던 작업들은 크게 문제가 없었는데, 갑자기 옆팀에서 배치가 돌지 않는다고 했다.
알고보니 해당 작업들은 팀에 맞게 oidc로 token을 부여 받아 별도의 iam이 필요한 작업들이었는데, 내가 만든 노드 그룹에서 돌 작업들은 필요 없어서 iam role을 딱히 부여 하지 않았다.
그런데 알고보니, 해당 작업들이 node selector가 별도로 부여 되어 있지 않았고, taints가 없던 내가 만든 노드 그룹에 스케쥴링 되면서 role이 부족하다는 버그가 발생 했다.
### 해결
node group에 taints를 추가 하고, 내가 생성하는 작업에는 tolerations을 추가 했다. 더이상 toleratinos를 지정하지 않은 작업들은 해당 노드 그룹에 스케쥴링 되지 않을것이다.
taints - 노드 그룹에 설정 하는 제약 조건이다. 해당 조건을 tolerations spec으로 추가 하지 않은 pod는 effect 효과를 받는다.
tolerations - pod spec에 작성하는 조건이다. taints 조건과 일치 하면 taints 제약을 받지 않는다.
### 미세팁
taints는 effects가 있는데,
- No Schedule : 추가 스케쥴을 할 수 없다.- No Execute : 실행도 할 수없다. tolerations 설정하지 않은 pod는 모두 퇴출(evicted) 한다.
- Prefer No Schedule : 웬만하면 오지마. 마지막에 고려 해
'개발' 카테고리의 다른 글
AutoConfigureRestTestClient (0) 2026.01.27 Open Search Cluster mapper exception (0) 2025.10.29 도메인 주도 설계(DDD) 굳이 안해도 돼요 (0) 2025.09.17 테스트를 쓴다는 것 (0) 2025.04.18 PRD가 도착 했다. 개발자로서 나는 (0) 2025.03.06