16.11.2. 테인트 및 허용 오차
테인트를 사용하면 Pod에 일치하는 톨러레이션 이 없는 경우 노드가 Pod 예약을 거부할 수 있습니다.
노드 사양(NodeSpec)을 통해 노드에 테인트를 적용하고 Pod 사양(PodSpec
)을 통해Pod에 허용 오차를 적용합니다.
노드의 테인트는 해당 테인트를 허용하지 않는 모든 Pod를 거절하도록 노드에 지시합니다.
테인트 및 톨러레이션은 key, value 및 effect로 구성되어 있습니다. 연산자를 사용하면 이러한 매개 변수 중 하나를 비워 둘 수 있습니다.
매개변수 | 설명 | ||||||
---|---|---|---|---|---|---|---|
|
| ||||||
|
| ||||||
| 다음 명령 중 하나를 실행합니다.
| ||||||
|
|
톨러레이션은 테인트와 일치합니다.
operator
매개변수가Equal
로 설정된 경우:-
key
매개변수는 동일합니다. -
value
매개변수는 동일합니다. -
effect
매개변수는 동일합니다.
-
operator
매개변수가Exists
로 설정된 경우:-
key
매개변수는 동일합니다. -
effect
매개변수는 동일합니다.
-
16.11.2.1. 여러 테인트 사용
동일한 노드에 여러 테인트를 배치하고 동일한 pod에 여러 톨러레이션을 배치할 수 있습니다. OpenShift Container Platform은 다음과 같이 여러 테인트 및 톨러레이션을 처리합니다.
- Pod에 일치하는 톨러레이션이 있는 테인트를 처리합니다.
나머지 일치하지 테인트는 pod에서 다음 effect를 갖습니다.
-
effect가
NoSchedule
인 일치하지 않는 테인트가 하나 이상있는 경우 OpenShift Container Platform은 해당 노드에 pod를 예약할 수 없습니다. -
effect가
NoSchedule
인 일치하지 않는 테인트가 없지만 effect가PreferNoSchedule
인 일치하지 않는 테인트가 하나 이상있는 경우, OpenShift 컨테이너 플랫폼은 노드에 pod를 예약 시도하지 않습니다. effect가
NoExecute
인 일치하지 않는 테인트가 하나 이상있는 경우 OpenShift Container Platform은 노드에서 Pod를 제거하거나 (노드에서 이미 실행중인 경우) Pod가 노드에 예약되지 않습니다 (노드에서 아직 실행되지 않은 경우).- 테인트를 허용하지 Pod는 즉시 제거됩니다.
-
톨러레이션 사양에
tolerationSeconds
를 지정하지 않은 테인트를 허용하는 Pod는 영구적으로 바인딩된 상태로 유지됩니다. -
tolerationSeconds
가 지정된 테인트를 허용하는 Pod는 지정된 시간 동안 바인딩된 상태로 유지됩니다.
-
effect가
예를 들면 다음과 같습니다.
노드에는 다음과 같은 테인트가 있습니다.
$ oc adm taint nodes node1 key1=value1:NoSchedule $ oc adm taint nodes node1 key1=value1:NoExecute $ oc adm taint nodes node1 key2=value2:NoSchedule
Pod에는 다음과 같은 톨러레이션이 있습니다.
tolerations: - key: "key1" operator: "Equal" value: "value1" effect: "NoSchedule" - key: "key1" operator: "Equal" value: "value1" effect: "NoExecute"
이 경우 세 번째 테인트와 일치하는 톨러레이션이 없기 때문에 pod를 노드에 예약할 수 없습니다. 세 번째 테인트는 pod에서 허용되지 않는 세 번째 테인트 중 하나이기 때문에 테인트가 추가될 때 노드에서 이미 실행되고 있는 경우 pod가 계속 실행됩니다.