본문 바로가기
INFRA/DevOps

[K8S] Taint

by BTC_하동녹차 2023. 9. 6.

베하~! BTC_녹차공원 팀의 하동녹차 입니다.

Kubernetes Taint 에 대해 알아보겠습니다!

 

 

쿠버네티스 테인트(Taint)

 

쿠버네티스(Kubernetes)에서 "Taint(테인트)"는 노드(Node)에 특정 조건을 부여하여 해당 노드에만 특정 유형의 파드(Pod)가 스케줄링되도록 하며 클러스터 내에서 리소스 및 워크로드를 효율적으로 관리하는 데 사용됩니다.

Taint의 적용 효과로 "NoSchedule", "PreferNoSchedule", "NoExecute" 중 하나 입니다.

  • "NoSchedule": 해당 Taint가 있는 노드에는 일치하는 파드가 스케줄링
  • "PreferNoSchedule": 일치하는 파드가 노드에 스케줄링되지 않는 것
  • "NoExecute": 이미 노드에서 실행 중인 파드에 대한 Taint 적용으로 해당 노드에서 해당 파드가 종료

 

Taint를 설정하면 특정 노드에 파다를 스케줄링할 때 해당 Taint에 대한 Toleration을 설정하는 것이 중요합니다.

파드에서 이러한 정의하면 특정 Taint를 가진 노드에도 파드를 스케줄링할 수 있습니다.

 

Taint와 Toleration은 클러스터 관리 및 워크로드 분산에 유용하며, 예를 들어 특정 노드에 특별한 하드웨어 또는 리소스를 활용하는 워크로드를 제어하거나 격리된 환경을 만들 때 사용됩니다.

 

 

 

Kubernetes Taint 실습

실습 사이트 주소 입니다.

https://killercoda.com/

 

Killercoda Interactive Environments

Learn DevOps Linux Kubernetes CKS CKA CKAD Git Cassandra etc | Katacoda compatible

Taint와 Toleration을 사용하는 간단한 실습을 해보겠습니다.

 

노드에 Taint를 설정하고, 파드가 해당 노드에 스케줄링되도록 Toleration을 파드 spec 에 추가하는 방법을 다룹니다.
 
먼저, 노드에 Taint를 설정합니다.  "special=true:NoSchedule"라는 Taint를 설정하겠습니다.
kubectl taint nodes <node-name> special=true:NoSchedule
 

 

 

 

적용이 잘 되었는지 확인해 보겠습니다.

k describe nodes | grep -i taint​

 

 

 

 

이제 파드를 생성하고 Toleration 추가해 보겠습니다

Toleration을 사용하여 Taint가 설정된 노드에 팟을 스케줄링하려면 pod spec 에 Toleration을 추가해야 합니다.
YAML 파일을 사용하여 팟을 정의하고 Toleration을 설정해 보겠습니다.
apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
    - name: my-container
      image: nginx:latest
  tolerations:
    - key: "special"
      operator: "Equal"
      value: "true"
      effect: "NoSchedule"

 

 
 
이제 이 YAML 파일을 사용하여 파드를 생성합니다.
kubectl apply -f taint.yaml

이 Pod는 "special=true:NoSchedule" Taint가 설정된 노드에도 스케줄링됩니다.

 

 
 
이제 이 파드가 어떤 노드에서 실행되었는지와 파드의 상태를 확인해보겠습니다.
kubectl get pods -o wide
 

node01 에 생성 된 것을 확인 할 수 있습니다.

 

 
이렇게 간단한 예제를 통해 노드에 Taint를 설정하고, 파드가 해당 노드에 스케줄링되도록 Toleration을 파드 spec 에 추가하는 방법을 확인할 수 있습니다.

 

 

Kubernetes Taint 에 대해 알아보았습니다.

다음번에는 더욱 재밌는 주제로 찾아오겠습니다.

이상 BTC_녹차공원 팀이였습니다!

베빠~!

'INFRA > DevOps' 카테고리의 다른 글

[DevOps] Jenkins Git 연동  (0) 2023.09.15
[K8S] Multi Container  (0) 2023.09.13
Git Branch의 개념과 활용  (0) 2023.09.01
[DevOps]EC2 Ubuntu에 Jenkins 설치  (0) 2023.08.30
[K8S] NodeSelector  (0) 2023.08.29

댓글