1. 개념
- 커든
- 특정 노드를 스케줄러에서 제외시켜 파드가 할당되지 않도록 함
- 기존에 노드에 배포된 파드는 그대로 남아있음
- 드레인
- 특정 노드를 스케줄러에서 제외시켜 파드가 할당되지 않도록 하고, 기존에 배포된 파드를 다른 노드로 이동시킴
- 노드를 업데이트하는 경우 활용 가능
2. 커든 설정
2.1. 명령어
kubectl cordon [노드_이름]
kubectl uncordon [노드_이름]
2.2. 커든 적용
- w3-k8s 노드에 커든 적용 후 디플로이먼트 배포
- w3-k8s 노드를 제외한 다른 노드에만 배포된 것을 확인
- 커든을 해제하고 다른 노드의 파드를 삭제하면 w3-k8s 노드에 재배포된 것을 확인
3. 드레인 설정
3.1. 명령어
kubectl drain [노드_이름]
or
kubectl drain [노드_이름] --ignore-daemonsets --force
kubectl uncordon [노드_이름]
3.2. 드레인 적용
- w1-k8s 노드에 드레인 적용 시 기존에 배포된 파드가 추출된 것을 확인
- w1-k8s 노드에 드레인을 적용하고 디플로이먼트 배포 시 다른 노드에만 파드가 배포되는 것을 확인
- 드레인을 해제하고 다른 노드의 파드를 삭제하면 w1-k8s 노드에 재배포된 것을 확인
참고
- https://www.udemy.com/course/certified-kubernetes-administrator-with-practice-tests/