파드 스케줄링
파드를 만들때 어떤 노드에서 실행할지 다양한 옵션으로 선택할 수 있다.
NodeSelector(노드 셀렉터)
Node Affinity
Pod affinity, antiAffinity
taint, toleration
cordon, drain
- cordon
- 지정한 노드에 추가로 파드를 스케줄링 하지 않는다.
- kubectl cordon 노드명
master01@master01-VirtualBox:~$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
master01-virtualbox Ready master 79d v1.19.2
worker01-virtualbox Ready <none> 79d v1.19.2
worker02-virtualbox NotReady <none> 79d v1.19.2
master01@master01-VirtualBox:~$ kubectl cordon worker01-virtualbox
node/worker01-virtualbox cordoned
master01@master01-VirtualBox:~$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
master01-virtualbox Ready master 79d v1.19.2
worker01-virtualbox Ready,SchedulingDisabled <none> 79d v1.19.2
worker02-virtualbox NotReady <none> 79d v1.19.2
master01@master01-VirtualBox:~$ kubectl uncordon worker01-virtualbox
node/worker01-virtualbox uncordoned
master01@master01-VirtualBox:~$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
master01-virtualbox Ready master 79d v1.19.2
worker01-virtualbox Ready <none> 79d v1.19.2
worker02-virtualbox NotReady <none> 79d v1.19.2
- drain
- 지정된 노드에 있는 파드를 다른 노드로 옮긴다.
- 노드에 데몬셋이 존재할 경우 적용 불가능
- 데몬셋 무시하고 적용할 경우 --ignore-daemonsets=true 옵션 추가
- 컨트롤러를 이용하지 않은 파드들도 drain 불가능
출처 : 쿠버네티스 입문 - 90가지 예제로 배우는 컨테이너 관리자 자동화 표준 (동양북스)