TaintsTolerations는 Kubernetes에서 특정 노드에 파드를 제한적으로 스케줄링할 수 있도록 해주는 기능입니다. 이들은 함께 사용되어 특정 노드에서 특정 조건을 충족하는 파드만 스케줄링할 수 있게 합니다.

1. Taints (테인트)

  • 목적: 노드에 테인트를 추가하면, 기본적으로 그 노드에 파드가 스케줄링되지 않도록 제한합니다. 테인트는 특정 조건을 설정하여 파드가 해당 노드에 배치되지 않도록 막는 역할을 합니다.
  • 구성 요소: 테인트는 , , 효과(Effect) 세 가지로 구성됩니다.
    • : 테인트를 구분하는 이름.
    • : 테인트의 추가 정보(선택 사항).
    • 효과(Effect): 테인트의 동작 방식. 아래 세 가지 중 하나를 사용합니다:
      • NoSchedule: 조건을 만족하는 파드만 이 노드에 스케줄링할 수 있습니다.
      • PreferNoSchedule: 가능한 한 스케줄링하지 않으려 하지만 필요할 경우 스케줄링할 수도 있습니다.
      • NoExecute: 기존에 이 노드에 있던 파드라도 조건을 만족하지 않으면 제거합니다.

예시:

노드에 다음과 같은 테인트를 추가한다고 가정해 보겠습니다:

kubectl taint nodes node1 key=value:NoSchedule

위 명령어는 node1key=valueNoSchedule 테인트를 추가하여, 조건을 만족하지 않는 파드는 이 노드에 스케줄링되지 않도록 합니다.

2. Tolerations (톨러레이션)

  • 목적: 톨러레이션은 특정 파드가 테인트가 설정된 노드에 스케줄링될 수 있도록 허용하는 역할을 합니다. 즉, 파드에 톨러레이션이 추가되면 해당 테인트를 무시하고 그 노드에 배치될 수 있습니다.
  • 구성 요소: 톨러레이션 역시 , , 효과(Effect)를 가집니다.
    • 파드의 톨러레이션 키와 값이 노드의 테인트와 일치하면 해당 노드에 배치될 수 있습니다.

예시:

파드에 다음과 같은 톨러레이션을 추가하여 key=value 테인트가 있는 노드에도 스케줄링되도록 할 수 있습니다:

tolerations:
- key: "key"
  operator: "Equal"
  value: "value"
  effect: "NoSchedule"

Taints와 Tolerations 사용 예시

  1. 전용 노드 설정: NoSchedule 테인트와 해당 테인트에 대한 톨러레이션을 사용하여 특정 파드만 해당 노드에 스케줄링되도록 할 수 있습니다. 예를 들어, GPU 노드에 GPU를 사용하는 워크로드만 스케줄링하도록 설정할 수 있습니다.

  2. 노드 유지 관리: NoExecute 테인트를 사용하여 유지 관리 중인 노드에서 파드를 제거하고, 작업이 완료되면 파드를 다시 스케줄링할 수 있습니다.

이렇게 TaintsTolerations는 특정 노드에 특정 파드만 스케줄링하거나 특정 조건에 따라 노드에서 파드를 제거할 때 유용하게 사용됩니다.

'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

+ Recent posts