Kubernetes - Node Drain

쌈지몬·2023년 7월 4일
0

Kubernetes를 사용하는 경우, 각 클러스터 노드 별로 할당되어 있는 파드의 위치를 변경해야되는 경우가 있음. 이러한 경우를 위해 kubectl cordon, drain, uncordon 명령을 통해 노드에 대한 드레인 작업을 수행해야함.

1. 노드 리스트 조회

$ kubectl get nodes
NAME	    STATUS	ROLES    AGE	VERSION
ubuntu-01	Ready	<node>   244d   v1.23.10
ubuntu-02	Ready	<node>   244d   v1.23.10
ubuntu-03	Ready	<node>   244d   v1.23.10
ubuntu-04	Ready	<node>   244d   v1.23.10

2. cordon

특정 노드를 선택하여 스케줄 대상에서 제외함

$ kubectl cordon ubuntu-01 ubuntu-02 ubuntu-03 ubuntu-04

3. drain

drain은 cordon이랑 똑같이 동작하지만, SchedulingDisabled된 노드에 남아있는 Pod를 모두 삭제하고 재생성하는 등의 기능이 추가
추가 옵션의 경우 데몬셋, PDB 설정 등 단순 드레인 시도 시 실패하는 케이스를 위한 설정

$ kubectl drain ubuntu-01 ubuntu-02 ubuntu-03 ubuntu-04 --delete-emptydir-data --ignore-daemonsets --disable-eviction

4. uncordon

포드가 노드에 정상적으로 스케줄링될 수 있도록 처리

$ kubectl uncordon ubuntu-01 ubuntu-02 ubuntu-03 ubuntu-04
profile
What goes around comes around.

0개의 댓글