Kubernetes/Udemy - CKAD with Tests

Taints & Tolerations

비번변경 2021. 7. 18. 22:40

Taints

Node에 Pod가 배치될 수 없도록 Node에 설정한다.

 

Tolerations

Pod에 설정하며, 일치하는 Taint가 있는 Node에 스케쥴링될 수 있도록 한다.

 

Taints와 Tolerations은 함께 동작하면서 포드가 적절하지 않은 노드에 배치되지 않도록 한다. 포드가 특정 노드에 배치되도록 설정하는 것이 아니다.

 

설정 방법

  • Taint
    kubectl taint nodes <NODE_NAME> <KEY=VALUE:taint-effect>
    
    # 예시
    kubectl taint nodes node1 app=blue:NoSchedule
    taint-effect는 스케쥴링된 포드에 동일한 toleration이 없는 경우 포드 처리 방식이다. taint-effect에는 아래의 세 개 값을 설정할 수 있다.

    NoSchedule 포드를 노드에 배치하지 않음
    PreferNoSchedule 포드를 노드에 배치시키지 않으나, 그것을 항상 보장하지는 않음
    NoExecute 포드가 노드에 배치되지 않거나, 제거한다.

     

  • Toleration
    포드 정의 파일에서 toleration 항목 추가하여 설정할 수 있다. 모든 값은 큰따옴표로 묶여야 한다.
    apiVersion: v1
    kind: Pod
    metadata:
    	name: myapp-pod
    spec:
    	containers:
    		- name: nginx
    		image: nginx
    	tolerations:
    		- key: "app"
    		operator: "Equal"
    		value: "blue"
    		effect: "NoSchedule"​

 

+

마스터 노드의 경우,

쿠버네티스가 클러스터를 처음 설정할 때 포드가 스케쥴링되지 않도록 자동으로 taint를 설정한다. 그 내용은 describe 명령으로 확인할 수 있다.

kubectl describe node <NODE_NAME> | grep Taints