본문 바로가기

Docker & Kubenetes

쿠버네티스 Pod 배포 ( Taint & Toleration & Cordon & Drain )

쿠버네티스 클러스터 내에 pod를 배치할 때 Label을 함께 활용하여 여러 명령 및 옵션으로 사용자가 원하는 node에 pod를 배치하고 컨트롤 할 수 있다.

Taint

- node마다 설정 가능하고 설정한 노드는 스케쥴에서 제외된다.

- 기본적으로 master node 에는 taint가 설정되어 있다.

kubectl taint node [nodename] [key]=[value]:[option]

옵션

  • NoSchedule
    tainit node에 pod의 스케줄링을 허용하지 않음
    기존 실행 중인 pod는 유지하고 이후 실행될 pod에 대해서만 스케쥴링 제외
  • NoExecute
    tainit node에 pod의 실행을 허용하지 않음
    기존에 실행 중인 pod를 모두 방출하고 스케쥴링에도 제외
  • PreferNoSchedule
    tainit node에 pod 스케줄링을 선호하지 않음
    기존 실행 중인 Pod는 유지하고, 스케쥴링 비선호로 해당 node 밖에 스케쥴링 될 곳이 없다면 배치 허용

Toleration

- taint를 무시한 채 pod를 배치할 수 있다.

- torelations 필드 하위의 key, value,effect 필드 값을 원하는 taint의 설정값을 넣는다. 
- operator 필드 값은 Equal과 Exists가 있다.
Equal은 key value effect 필드 값이 테인트의 설정값과 모두 같은 지 확인하고, Exists는 앞 세 가지 필드를 선별해서 사용할 때 설정한다.

Cordon

- 특정 Node를 스케쥴러에서 제외하여 해당 Node에 Pod가 배치되지 않도록 한다.

- 기존에 배치되어 있던 Pod는 남아있다.

 

Cordon 적용
kubectl cordon [node name]

Cordon 해제
kubectl uncordon [node name]

Drain

- 특정 Node를 스케쥴러에서 제외하여 해당 Node에 Pod가 배치되지 않도록 한다.

- 기존에 배치되어 있던 Pod도 다른 Node로 재배치 시킨다.

- 노드를 업데이트 하는 경우에 활용 가능하고 drain 명령을 사용하면 cordon 명령도 함께 실행된다.

- drain 명령 시 가끔씩 에러가 발생 하는데 이는 노드에 배포 되어있는 daemonset 때문에 발생하는 것이 대부분이다.
이때는 --ignore-daemonsets --force 옵션을 사용하면 된다.

daemonset : 일반적으로 모든 node에 동작하도록 배포되며 kubectl, proxy, deployment,  log수집 등이 있다. 

 

Drain 적용
kubectl drain [nade name] 혹은 kubectl drain [node name] --ignore-daemonsets --force

Drain 해제

kubectl undrain [node name]

 

 

출처: https://kimjingo.tistory.com/146

 

[k8s] 노드 스케쥴링 - Taints와 Toleratioin(테인트와 톨러레이션)

테인트(Taints)와 톨러레이션(Toleration) 쿠버네티스 클러스터의 특정 노드에 테인트(Taint)를 설정할 수 있습니다. Node Affinity는 Pod가 특정 노드를 선택하게 하는 Pod의 속성이었다면 테인트(Taint)는 반

kimjingo.tistory.com

https://kubernetes.io/ko/docs/concepts/scheduling-eviction/taint-and-toleration/

 

테인트(Taints)와 톨러레이션(Tolerations)

노드 어피니티는 노드 셋을 (기본 설정 또는 어려운 요구 사항으로) 끌어들이는 파드의 속성이다. 테인트 는 그 반대로, 노드가 파드 셋을 제외시킬 수 있다. 톨러레이션 은 파드에 적용된다. 톨

kubernetes.io

https://velog.io/@pinion7/Kubernetes-Pod-%EB%B0%B0%EC%B9%98%EC%A0%84%EB%9E%B5-Taint%EC%99%80-Toleration%EC%97%90-%EB%8C%80%ED%95%B4-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B3%A0-%EC%8B%A4%EC%8A%B5%ED%95%B4%EB%B3%B4%EA%B8%B0

 

Kubernetes Pod 배치전략, Taint와 Toleration에 대해 이해하고 실습해보기

- Pod 배치전략 중 Taint와 Toleration에 대해 이해하고 실습한다.

velog.io