ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Taints/Tolerations와 Node Affinity의 차이
    kubernetes/CKA 2025. 12. 4. 15:45

    아주 쉽게, 그리고 실무 관점에서 Taints/TolerationsNode Affinity의 차이를 정리해드릴게요.


    🧩 핵심 요약 (가장 중요한 차이)

    Taints / Tolerations 노드 → 파드 제한 노드가 특정 파드를 “거부”함 노드가 파드를 밀어냄
    Node Affinity 파드 → 노드 선택 파드가 특정 노드에 올라가고 싶다고 요청 파드가 노드를 선택함

     

    👉 Taint는 노드의 방어막
    👉 Affinity는 파드의 선호 또는 필수 요구 조건


    🧩 1. Taints / Tolerations : 노드가 파드를 거부하는 규칙

     

    ✔ 목적

    • 특정 노드에 아무 파드나 스케줄링되지 못하게 막고 싶을 때
    • 보안/관리 이유로 특별한 파드만 들어오게 하고 싶을 때
    • control-plane 노드 보호 (Kubernetes 기본값)

    ✔ 예시

    노드가 이렇게 선언 : 나는 key=dedicated 파드만 받겠다. 다른 파드는 거부!!

    kubectl taint nodes node01 dedicated=special:NoSchedule

     

    이 노드에 배치되려는 파드는 toleration이 필요함:

    절대 이 노드에 못 들어감.

     

    🧩 2. Node Affinity : 파드가 “나는 특정 노드에 가고 싶다”라고 요청

     

    ✔ 목적

    • 특정 label이 달린 노드에 파드를 배치하고 싶을 때
    • 스케줄링의 “선호/필수 조건”을 파드가 직접 제시

    ✔ 예시

    파드가 말함: color=blue 라벨 있는 노드여야만 올라갈 수 있음!

    affinity:
      nodeAffinity:
        requiredDuringSchedulingIgnoredDuringExecution:
          nodeSelectorTerms:
          - matchExpressions:
            - key: color
              operator: In
              values:
              - blue
     

    결과
    → 해당 라벨이 없으면 스케줄링 자체가 불가 (Pending 상태)


    🎯 가장 중요한 차이: "누가 주도권을 가지는가?"

     

    ✔ Taint = 노드가 주도권을 가짐

    • 이 노드에 들어올 수 있는 파드를 “필터링”
    • toleration 있는 파드만 들어올 수 있음

    ✔ Affinity = 파드가 주도권을 가짐

    • 내가 들어가고 싶은 노드를 “선택”
    • 노드가 OK라면 스케줄됨

    🎯 실무에서 쓰는 패턴

    ✔ Control-plane 노드 보호

    • Taint로 일반 파드 막음 (기본값)
    • Toleration 있어야만 스케줄 가능

    ✔ GPU 노드에만 AI workload 올리고 싶을 때

    • GPU 노드에 gpu=true 라벨
    • 파드에서 Affinity로 “gpu 노드만”

    ✔ 노드 간 파드 분산

    • Pod AntiAffinity로 고가용성 확보
      (예: ReplicaSet 파드가 다른 노드에 분산되도록)

    🧩 결론 (한 줄 요약)

    • Taints/Tolerations = 노드가 파드를 제한
    • Node Affinity = 파드가 노드를 선택

    둘 다 함께 쓰면 더 강력하게 제어할 수 있음.

    'kubernetes > CKA' 카테고리의 다른 글

    Priority Classes  (0) 2025.12.05
    틀린 문제 #4 Static Pod  (0) 2025.12.05
    Static pod  (0) 2025.12.05
    틀린 문제 # DaemonSet  (0) 2025.12.05
    틀린 문제 # Node Affinity  (0) 2025.12.04
Designed by Tistory.