0Pricing
DevOps Bootcamp · 강의

테인트 및 톨러레이션

테인트를 사용하여 특정 노드에 파드가 배치되지 않도록 방지하고, 일부 파드가 해당 테인트를 허용하도록 설정하세요.

테인트 및 톨러레이션은(는) CoddyKit의 무료 DevOps Bootcamp 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 DevOps Bootcamp 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. DevOps Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.

테인트란 무엇인가요

쿠버네티스 클러스터에 GPU 같은 특정 하드웨어가 있거나 특정 작업을 위해 예약된 특수 노드가 있다고 가정해 보세요. 아무 파드나 그곳에 배치되기를 원하지는 않겠지요?

이럴 때 테인트를 사용합니다! 테인트는 노드에 적용되는 속성으로, 파드가 해당 테인트를 명시적으로 "허용"하지 않는 한 노드에 스케줄링되지 않도록 합니다.

테인트를 사용하는 이유

테인트는 파드가 실행될 위치를 관리하는 데 매우 유용합니다.

  • 전용 노드: 특정 팀이나 애플리케이션을 위해 노드를 예약합니다.
  • 특수 하드웨어: 이를 필요로 하는 파드를 위해 GPU나 고성능 SSD가 있는 노드를 격리합니다.
  • 유지보수: 노드를 유지보수 대상으로 표시하여 새 파드가 일시적으로 스케줄링되지 않도록 합니다.

테인트 작동 방식

테인트를 노드에 세워 둔 "출입 금지" 표지판이라고 생각해 보세요. 파드는 톨러레이션이라는 일치하는 "허가증"이 있어야만 이 표지판을 무시할 수 있습니다.

테인트는 키, 값, 효과로 구성됩니다. 예를 들면 key=value:effect와 같습니다.

테인트 효과 이해하기

테인트의 "효과" 부분은 해당 테인트를 허용하지 않는 파드를 쿠버네티스가 어떻게 처리할지 지정합니다. 주요 효과는 세 가지입니다.

  • NoSchedule
  • PreferNoSchedule
  • NoExecute

각 효과를 살펴보겠습니다.

테인트 효과: NoSchedule

NoSchedule 효과는 가장 엄격합니다. 노드에 NoSchedule 테인트가 있으면 일치하는 톨러레이션이 없는 파드는 해당 노드에 스케줄링되지 않습니다.

새로운 NoSchedule 테인트가 추가되어도 해당 노드에서 이미 실행 중인 파드에는 영향이 없습니다.

테인트 효과: PreferNoSchedule

PreferNoSchedule은 NoSchedule의 "소프트" 버전입니다. 쿠버네티스는 테인트가 있는 노드에 파드를 스케줄링하지 않도록 최선을 다하지만, 반드시 그렇게 해야 하는 것은 아닙니다.

다른 적합한 노드가 없다면 톨러레이션이 없어도 파드가 PreferNoSchedule 테인트가 있는 노드에 스케줄링될 수 있습니다.

테인트 효과: NoExecute

NoExecute 효과는 이미 실행 중인 파드에 영향을 준다는 점에서 특별합니다. 노드에 NoExecute 테인트가 있으면 다음과 같이 처리됩니다.

  • 일치하는 톨러레이션이 없는 파드는 즉시 축출됩니다.
  • 일치하는 톨러레이션이 없는 새 파드는 스케줄링될 수 없습니다.

이는 노드를 비우거나 노드 장애를 처리할 때 자주 사용됩니다.

톨러레이션 소개

테인트가 노드에 적용되는 반면, 톨러레이션은 파드에 적용됩니다. 파드의 톨러레이션을 사용하면 일치하는 테인트가 있는 노드에 파드를 스케줄링할 수 있습니다.

일치하는 톨러레이션이 없으면 파드는 테인트가 있는 노드에 스케줄링될 수 없거나 스케줄링을 선호하지 않습니다.

파드 매니페스트의 톨러레이션

톨러레이션은 파드의 YAML 매니페스트에서 spec 섹션 아래에 정의합니다. 파드가 key=value:NoSchedule 테인트를 허용하도록 설정하는 방법은 다음과 같습니다.

apiVersion: v1
kind: Pod
metadata:
  name: my-tolerated-pod
spec:
  containers:
  - name: nginx
    image: nginx
  tolerations:
  - key: "special-purpose"
    operator: "Equal"
    value: "gpu"
    effect: "NoSchedule"

테인트와 톨러레이션의 일치 방식

파드가 테인트가 있는 노드에 스케줄링되려면 파드의 톨러레이션이 노드의 테인트와 일치해야 합니다. 일치 여부는 다음 항목으로 판단합니다.

  • 키: 동일해야 합니다.
  • 값: operator: Equal인 경우 동일해야 합니다.
  • 효과: 동일해야 합니다.
  • 연산자: Equal 또는 Exists일 수 있습니다(Exists는 해당 키의 모든 값을 의미합니다).

특수 톨러레이션인 key: "" operator: Exists는 모든 테인트를 허용합니다.

빠른 확인: 테인트

노드에 env=production:NoSchedule 테인트가 있습니다. 어떤 파드 설정을 사용해야 이 노드에 스케줄링할 수 있을까요?

복습: 테인트 및 톨러레이션

테인트와 톨러레이션에 대해 배웠습니다!

  • 테인트는 파드를 밀어내기 위해 노드에 적용됩니다.
  • 톨러레이션은 파드가 테인트가 있는 노드에 스케줄링될 수 있도록 파드에 적용됩니다.
  • 주요 테인트 효과는 NoSchedule, PreferNoSchedule, NoExecute입니다.
  • 파드가 스케줄링되려면 톨러레이션이 테인트의 키, 값, 효과와 일치해야 합니다.

이러한 도구를 사용하면 파드 배치를 세밀하게 제어할 수 있습니다.

자주 묻는 질문

“테인트 및 톨러레이션” 강의는 무료인가요?

네 — “테인트 및 톨러레이션” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 DevOps Bootcamp 강의 전체를 잠금 해제할 수 있습니다. DevOps Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.

“테인트 및 톨러레이션”에서 뭘 배우나요?

테인트를 사용하여 특정 노드에 파드가 배치되지 않도록 방지하고, 일부 파드가 해당 테인트를 허용하도록 설정하세요. 브라우저에서 직접 실행하는 실습 코드로 DevOps Bootcamp을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

DevOps Bootcamp을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 DevOps Bootcamp은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“테인트 및 톨러레이션” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 DevOps Bootcamp 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 DevOps Bootcamp 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 리소스 요청 및 제한
  2. 노드 선택기 및 어피니티
  3. 테인트 및 톨러레이션
  4. 파드 우선순위와 선점
← DevOps Bootcamp(으)로 돌아가기