[Scheduling] Taints and Tolerations vs Node Affinity

IMKUNYOUNG·2024년 7월 31일
0

KCNA

목록 보기
15/56

Kubernetes 클러스터를 운영하면서 다양한 파드가 여러 노드에 배치되도록 설정하는 것은 필수적입니다. 특히 특정 파드가 특정 노드에서만 실행되도록 하는 요구사항이 있을 때, Kubernetes에서 제공하는 TaintsTolerations, 그리고 Node Affinity를 활용하여 이를 관리할 수 있습니다. 이번 글에서는 이러한 기능을 사용하여 클러스터에서 파드 배치를 제어하는 방법을 소개하겠습니다.

1. 시나리오

우리는 Kubernetes 클러스터에 세 개의 노드와 각각 파랑, 빨강, 초록 색상의 파드를 가지고 있습니다. 목표는 파란색 파드를 파란색 노드에, 빨간색 파드를 빨간색 노드에, 그리고 초록색 파드를 초록색 노드에 배치하는 것입니다. 이와 동시에 다른 팀의 파드가 우리의 노드에 배치되거나 우리의 파드가 다른 팀의 노드에 배치되지 않도록 하고 싶습니다.

2. Taints와 Tolerations을 사용한 배치 제어

Taints와 Tolerations은 특정 노드가 특정 파드를 수용하지 못하도록 설정하는 방식입니다. 노드에 Taint를 적용하면 해당 Taint와 일치하는 Toleration이 설정된 파드만 해당 노드에 배치될 수 있습니다.

예시 설정:

  • 파란색 노드에 color=blue:NoSchedule Taint를 적용하고, 파란색 파드에 tolerations: [{ key: "color", value: "blue", effect: "NoSchedule" }]를 설정합니다.
  • 빨간색과 초록색 노드 및 파드에도 동일한 방식으로 Taints와 Tolerations을 적용합니다.

이 방법으로 각 색상의 파드는 해당하는 색상의 노드에만 배치됩니다. 그러나, 우리 파드가 다른 노드에 배치될 수 있는 가능성은 여전히 존재합니다.

3. Node Affinity를 사용한 세부 제어

예시 설정:

  • 노드에 label: color=blue 라벨을 설정하고, 파란색 파드에 nodeAffinity 설정을 추가합니다:
affinity:
  nodeAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
      nodeSelectorTerms:
      - matchExpressions:
        - key: color
          operator: In
          values:
          - blue

이 방법으로 파드는 특정 색상의 노드에만 배치됩니다. 그러나 이는 다른 팀의 파드가 우리의 노드에 배치되는 것을 막지 못할 수 있습니다.

4. Taints와 Tolerations, Node Affinity의 조합

클러스터를 보다 철저히 관리하기 위해 Taints와 Tolerations, Node Affinity를 함께 사용합니다. 이 조합을 통해 특정 파드가 특정 노드에 배치되도록 하면서도 다른 파드가 해당 노드에 배치되지 않도록 할 수 있습니다.

종합 설정:

  • 각 노드에 해당 색상의 Taint를 적용하고, 해당 파드에 Toleration을 설정합니다.
  • 추가로 각 파드에 Node Affinity를 설정하여 다른 노드에 배치되지 않도록 합니다.

이렇게 하면 특정 파드가 특정 노드에만 배치되고, 다른 파드가 해당 노드에 배치되지 않도록 완전히 제어할 수 있습니다.

마치며

Kubernetes 클러스터에서 Taints와 Tolerations, Node Affinity를 적절히 활용하면 특정 파드가 특정 노드에 배치되도록 제어할 수 있습니다. 이는 리소스 사용의 효율성을 높이고, 안정적인 클러스터 운영을 위한 중요한 방법입니다.

0개의 댓글