Taints와 Tolerations는 Kubernetes에서 특정 노드에 파드를 제한적으로 스케줄링할 수 있도록 해주는 기능입니다. 이들은 함께 사용되어 특정 노드에서 특정 조건을 충족하는 파드만 스케줄링할 수 있게 합니다.
1. Taints (테인트)
- 목적: 노드에 테인트를 추가하면, 기본적으로 그 노드에 파드가 스케줄링되지 않도록 제한합니다. 테인트는 특정 조건을 설정하여 파드가 해당 노드에 배치되지 않도록 막는 역할을 합니다.
- 구성 요소: 테인트는
키
,값
,효과(Effect)
세 가지로 구성됩니다.- 키: 테인트를 구분하는 이름.
- 값: 테인트의 추가 정보(선택 사항).
- 효과(Effect): 테인트의 동작 방식. 아래 세 가지 중 하나를 사용합니다:
NoSchedule
: 조건을 만족하는 파드만 이 노드에 스케줄링할 수 있습니다.PreferNoSchedule
: 가능한 한 스케줄링하지 않으려 하지만 필요할 경우 스케줄링할 수도 있습니다.NoExecute
: 기존에 이 노드에 있던 파드라도 조건을 만족하지 않으면 제거합니다.
예시:
노드에 다음과 같은 테인트를 추가한다고 가정해 보겠습니다:
kubectl taint nodes node1 key=value:NoSchedule
위 명령어는 node1
에 key=value
와 NoSchedule
테인트를 추가하여, 조건을 만족하지 않는 파드는 이 노드에 스케줄링되지 않도록 합니다.
2. Tolerations (톨러레이션)
- 목적: 톨러레이션은 특정 파드가 테인트가 설정된 노드에 스케줄링될 수 있도록 허용하는 역할을 합니다. 즉, 파드에 톨러레이션이 추가되면 해당 테인트를 무시하고 그 노드에 배치될 수 있습니다.
- 구성 요소: 톨러레이션 역시
키
,값
,효과(Effect)
를 가집니다.- 파드의 톨러레이션 키와 값이 노드의 테인트와 일치하면 해당 노드에 배치될 수 있습니다.
예시:
파드에 다음과 같은 톨러레이션을 추가하여 key=value
테인트가 있는 노드에도 스케줄링되도록 할 수 있습니다:
tolerations:
- key: "key"
operator: "Equal"
value: "value"
effect: "NoSchedule"
Taints와 Tolerations 사용 예시
전용 노드 설정:
NoSchedule
테인트와 해당 테인트에 대한 톨러레이션을 사용하여 특정 파드만 해당 노드에 스케줄링되도록 할 수 있습니다. 예를 들어, GPU 노드에 GPU를 사용하는 워크로드만 스케줄링하도록 설정할 수 있습니다.노드 유지 관리:
NoExecute
테인트를 사용하여 유지 관리 중인 노드에서 파드를 제거하고, 작업이 완료되면 파드를 다시 스케줄링할 수 있습니다.
이렇게 Taints와 Tolerations는 특정 노드에 특정 파드만 스케줄링하거나 특정 조건에 따라 노드에서 파드를 제거할 때 유용하게 사용됩니다.
'IT > kubernetes[k8s]' 카테고리의 다른 글
쿠버네티스(Kubernetes)란? (2) | 2024.11.15 |
---|---|
쿠버네티스 기본 명령어 모음 (0) | 2024.11.15 |
Kubernetes Ingress (0) | 2024.11.14 |
쿠버네티스 서비스(Service) (0) | 2024.11.13 |
쿠버네티스 - 노드 (1) | 2024.11.08 |