쿠버네티스 - Taint & Tolerations

Moon Blue의 IT 로그 📝·2023년 12월 11일
0

TaintTolerations 은 어떤 파드가 특정 노드를 사용할 수 있는지를 제한하고자 사용한다

📌 Taint

  • 테인트는 일반적으로 어떤 파드가 해당 노드에 스케줄링되지 못하게 하는 역할을 합니다.
  • 특정 테인트가 있는 노드에는 일치하는 톨러레이션을 가진 파드만 스케줄링됩니다.

📌 Tolerations

  • 파드가 어떤 특정 노드에 스케줄링될 수 있도록 하는 설정입니다.
  • 톨러레이션은 파드의 스펙(spec)에서 설정되며, 파드의 정의에 어떤 노드 테인트를 허용할지를 지정합니다.

🔖 간단한 예시

  • 특정 노드에는 GPU가 있다 (테인트가 부여됨)
  • 파드는 GPU를 필요로 하는데, 특정 노드에만 스케줄링하고 싶다

이때, 해당 파드의 정의에 특정 톨러레이션을 추가하여, GPU가 있는 노드에도 스케줄링되게 할 수 있다.
이는 파드가 특정 테인트를 허용하도록 만드는 것

📝 Node 에 Taint 설정 추가

kubectl taint node [node-name] key=value:NoSchedule | PreferNoSchedule | NoExcute

🔍 Taint의 Effect 종류

  • NoSchedule : 지정된 노드에 스케줄링되지 않도록 막습니다. 이는 특정 노드에 파드가 실행되지 않도록 강제하는 데 사용됩니다.
  • PreferNoSchedule : 특정 노드에 스케줄링되지 않는 것이 좋지만, 필수적이지는 않을 때 사용됩니다. 다른 노드에 스케줄링하는 것이 가능하지만 지정된 노드가 가능한 경우 사용합니다.
  • NoExcute : 파드가 실행되고 있는 상태에서도 해당 노드의 상태가 변경되면 파드를 제거하도록 지시합니다. 주로 노드에 문제가 발생하거나 조건이 변화했을 때 사용됩니다.

📝 Pod 에 Tolerations 설정 추가

apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    env: test
spec:
  containers:
  - name: nginx
    image: nginx
    imagePullPolicy: IfNotPresent
  tolerations: # spec 하위 속성으로 추가하여 작성
  - key: "example-key"
    operator: "Exists"
    effect: "NoSchedule"
profile
What a Beautiful World~ 🌏

0개의 댓글