Search
Duplicate

Taints & Tolerations

생성일
2021/05/08 11:27
태그

Taints and Tolerations

포드 간 관계 및 노드에 배치되는 포드를 제한하는 방법

Taint 및 Tolerations는 노드에서 예약 할 수있는 포드에 대한 제한을 설정하는 데 사용됩니다.

Taints는 노드에 설정하고, Toleration은 Pod에 설정한다.
노드의 특정 taint에 내성이 있는(Toleration) 포드 만 해당 노드에서 예약됨
Taints와 Toleration은 POD가 어떤 노드로 스케줄링 될 지 결정하기 위해 사용하는 게 아니다. 노드가 자신에게 부여된 Taints를 Toleration하는 POD만을 허용하는 것이다.

Taints

kubectl taint nodes 커맨드를 통해 Node에 taint 지정
Syntax
$ kubectl taint nodes <node-name> key=value:taint-effect
Plain Text
복사
Example
$ kubectl taint nodes node1 app=blue:NoSchedule
Plain Text
복사
Taint Effect : 이 Taint를 Tolerate하지 않는 POD에는 어떤 일이 벌어지는가?
NoSchedule : POD는 이 노드에 스케줄링 되지 않을 것이다.
PreferNoSchedule : 시스템은 이 노드에 POD를 스케줄링을 하지 않으려고 노력하지만 반드시 보장하는 것은 아니다.
NoExecute : 이 노드에 POD를 스케줄링하지 않으며, 이미 실행중인 POD가 있는 경우 Evict 된다.

Tolerations

tolerations 은 Pod의 Pod 정의 파일에 추가
apiVersion: v1 kind: Pod metadata: name: myapp-pod spec: containers: - name: nginx-container image: nginx tolerations: - key: "app" operator: "Equal" value: "blue" effect: "NoSchedule"
Plain Text
복사

Taint 및 Tolerations는 특정 노드로 이동하도록 포드에 지시하지 않습니다. 대신 특정 허용 범위가있는 포드 만 허용하도록 노드에 지시합니다.

To see this taint, run the below command
$ kubectl describe node kubemaster |grep Taint
Plain Text
복사

K8s Reference Docs