Taints and Tolerations
- Taint: 배제 조건, Tolerations: 허용 조건
- node는 Taint 설정 시 비유하자면.. 관리자 외 출입 불가 장소가 됨
- 일반 사람들은 당연히 관리자가 아닌 상태로 건물에 출입함
- 다만 일부 사람들은 사원증 등으로 관리자가 될 수 있음
- 사원증은 Tolerations, 관리자 외 출입 불가 장소는 Taint 설정된 node 이렇게 이해함
Taints - node
kubectl taint nodes node-name key=value:taint-effect
- effect는 크게 3가지
- NoSchedule: taint 허용하지 않은 pod는 스케줄링 금지(현재 실행중인 파드 보존)
- PreferNoSchedule: 되도록 스케줄링하지 마라, 리소스 부족 등 불가피하면 올라감
- NoExecute: 허용 안 한 파드는 지금 당장, 앞으로도 실행 금지(현재 실행 중인 파드도 즉시 퇴출, 퇴출 당하면 죽음)
Tolerations - PODs
kubectl taint nodes node1 app = blue : NoSchedule
apiVersion:
kind:
metadata:
name: myapp-pod
spec:
containers:
- name: nginx-container
image: nginx
tolerations: ## 여기부터 taint와 동일하게 설정해주면 됨
- key: "app"
operator: "Equal"
value: "blue"
effect: "NoSchedule"
- pod에서의 설정(따옴표 써야 안전하긴한데 안써도 ㄱㅊ)
- 강의에서는 spec이 metadata 안에 들어가있는데.. 맞는지 모르겟삼
- 아무튼 pod에서 저렇게 설정해줘도 공공장소같은 node에 들어가는 수가 있음
- 관리자실에 관리자만 모이세요! 하고 설정하여도 실제로는 공공 흡연장에 모여있을 수가 있음..
- 이를 해결할 수 있는 부분은 노드 선호도임
- 마스터 노드는 어떠한 파드도 스케줄링하지 않음
- taint 지우려면 똑같이 작성 후 뒤에 - 붙여주면 됨