Print
카테고리: [ Cloud Computing & MSA ]
조회수: 2227

1. Taint

1.1. Taint란?

Taint의 사전적인 의미는 "얼룩"이다. 이 기능의 목적은 해당 노드에 지정된 역할만 실행하게끔 하는 것이다.

1.2. Taint의 Effect 종류

노드에 Taint를 설정할 때 어떠한 효과(effect)를 가지게 할지 결정하는 것이다.

1.2.1. NoSchedule

1.2.2. PreferNoSchedule

Toleration이 없으면 Pod 스케줄링이 안되지만 꼭 그렇지만은 않다.

클러스터에 자원이 부족하면 Taint가 걸려있지만 스케줄링이 될 수도 있다. 

1.2.3. NoExecute

Toleration이 없으면 Pod 스케줄링 안된다.

기존에 실행 중인 Pod에도 영향을 준다.

1.3. Taint 명령어

기본적인 Taint 설정 명령어는 다음과 같다.

kubectl taint nodes <노드명> <Taint_이름>=<Taint_Key>:<Taint_Value>

1.3.1. Taint 설정 (role=webserver, 효과는 NoSchedule)

예를 들어, node01 노드에 role이라는 key에 webserver이라는 value를 가지고 있으며 NoSchedule 효과를 가진 Taint를 적용하는 방법은 다음과 같다.

kubectl taint node node01 role=webserver:NoSchedule

예를 들어, node05 노드에 k1이라는 key에 v1이라는 value를 가지고 있으며 NoSchedule 효과를 가진 Taint를 적용하는 방법은 다음과 같다.

kubectl taint nodes node05 k1=v1:NoSchedule

1.3.2. Taint 제거 (role:NoSchedule 제거)

 kubectl taint node node01 role:NoSchedule-

1.3.3. Taint 제거 (role 키를 가진 모든 Taint 제거)

 kubectl taint node node01 role-

1.3.4. Taint가 걸린 노드 확인

kubectl describe nodes | grep -i taint


2. Toleration

2.1. Toleration이란?

사전적으로는 "용인"이란 뜻이다. 목적은 Taint가 적용된 노드에 배포하기 위함이다. 따라서 Taint와 쌍으로 사용되며, Taint를 노드에 설정했다면 Toleration은 Pod에 설정한다.