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
$ oc adm taint nodes node1 key1=value1:NoSchedule $ oc adm taint nodes node1 key1=value1:NoExecute $ oc adm taint nodes node1 key2=value2:NoScheduleCopy to Clipboard Copied! Toggle word wrap Toggle overflow Pod에는 다음과 같은 톨러레이션이 있습니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
이 경우 세 번째 테인트와 일치하는 톨러레이션이 없기 때문에 pod를 노드에 예약할 수 없습니다. 세 번째 테인트는 pod에서 허용되지 않는 세 번째 테인트 중 하나이기 때문에 테인트가 추가될 때 노드에서 이미 실행되고 있는 경우 pod가 계속 실행됩니다.