Certified Kubernetes Administrator (CKA) with Practice Tests - Taint, Tolerant

Albert·2025년 1월 24일

도커

도커(Docker)는 컨테이너 기반의 가상화 플랫폼으로, 애플리케이션을 환경에 독립적으로 실행할 수 있도록 해줍니다. 도커를 사용하면 애플리케이션과 그에 필요한 모든 의존성을 하나의 패키지(컨테이너)로 묶어 어디서든 동일한 환경에서 실행할 수 있습니다.

쿠버네티스

쿠버네티스(Kubernets, k8s)는 컨테이너 오케스트레이션 플랫폼으로, 여러 개의 컨테이너를 효율적으로 배포하고, 관리하여, 확장할 수 있도록 도와줍니다.

Schedule

Master Node 안으 Scheduler 는 파드들을 관리하고 노드에 파드들을 배치하는 일을 합니다. 여기서 파드란, 쿠버네티스에서 자원을 관리하는 가장 최소의 단위입니다.

Taint

쿠버네티스에서는 일정한 룰을 통해서 파드들을 노드에 배치합니다.
Taint 는 노드를 오염시키고 내성(Tolerant)이 없는 파드는 배치할 수 없게 합니다.

Taint 설정을 통하여 스케쥴링 대상에서 특정 파드가 제외될 수 있다.
Taint 는 3가지의 effect 를 가진다.

  • NoExecute
    기존 Pod toleratino 없으면 퇴출, 새로울 Pod 배치 불가
  • NoSchedule
    기존 Pod 영향이 없고, 새로운 Pod 배치 불가
  • PreferNoSchedule
    기존 Pod 영향이 없고, 새로운 Pod 가 필요하면 배치 됨

아래와 같은 명령어를 통해서 노드에 Taint 를 설정할 수 있다.

kubernetes taint nodes <node> key=value:NoSchedule

kubernetes 공식 설명글

Toleration

Taint 는 노드의 "오염 표시"를 적용해 기본적으로 파드를 제한하는 반면, Toleration 은 오염된 노드에도 배치가 될 수 있도록 내성을 부여하는 것이다.

apiVersion: v1
kind: Pod
metadata:
  name: toleration-example-pod
spec:
  containers:
    - name: nginx
      image: nginx:latest
  tolerations:
    - key: "example-key"
      operator: "Equal"
      value: "example-value"
      effect: "NoSchedule"

Node Affinity

파드가 특정 노드에 포함될 수 있도록 설정

  • requiredDuringSchedulingIgnoredDuringExecution
    스케쥴링 도중에 파드가 배포되어야 하며, 이를 만족하지 못하면 Pod 는 Pending 상태가 된다.
  • preferredDuringSchedulingIgnoreDuringExecution
    Pod 를 스케줄링할 때 해당 조건을 만족하는 노드에 배치하려 노력하지만 필수는 아니며,
apiVersion: v1
kind: Pod
metadata:
  name: node-affinity-example
spec:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
          - matchExpressions:
              - key: disktype
                operator: In
                values:
                  - ssd
      preferredDuringSchedulingIgnoredDuringExecution:
        - weight: 1
          preference:
            matchExpressions:
              - key: region
                operator: In
                values:
                  - us-west
  containers:
    - name: nginx
      image: nginx

출처

profile
개발 블로그

0개의 댓글