티스토리 뷰
cordon과 drain은 필요에 의해 worknode를 사용 중지할 때, 혹은 작업을 한 쪽으로 넘겨야 할 때 사용하는 명령어입니다.
1. Cordon
kubectl cordon worker2.example.com
# worker2.example.com 노드를 중지
kubectl uncordon worker2.example.com
# worker2.example.com 노드를 다시 Ready 상태로 돌림
worker2 노드를 cordon하고 kubectl get nodes
로 상태를 확인합니다.
다른 노드와 달리 "SchedulingDisabled" 로 상태가 바뀐 것을 알 수 있습니다.
지금부터 새로 run하는 pod는 모두 worker3으로 할당됩니다.
cordon 후 새로 만든 webserver2 pod는 강제로 worker2가 아닌 worker3에 할당되는 것을 확인할 수 있습니다.
*** 이 때 기존에 worker2에서 실행되는 pod들은 그대로 유지되며, 다른 노드로 넘어가지는 않습니다.
다시 uncordon을 하게 되면 새로 run 하는 컨테이너가 다시 worker2로 할당됩니다.
*** 이 때도 기존에 worker3에 생성된 webserver2 pod는 worker2의 uncordon 후에도 그대로 유지됩니다.
2. Drain
cordon과 마찬가지로 worknode를 중지하는 명령어입니다.
cordon은 기존 작업이 다른 노드로 넘어가지는 않지만, drain은 기존의 모든 작업이 Ready 상태인 다른 노드로 넘어간다는 차이가 있습니다.
📌 노드를 reschedule 하려면 cordon이 아니라 drain을 사용 !!
kubectl drain worker2.example.com --ignore-daemonsets --force
# worker2.example.com 노드를 중지, 기존 작업이 모두 다른 노드로 넘어감
kubectl uncordon worker2.example.com
# worker2.example.com 노드를 다시 Ready 상태로 돌림
drain 시 --ignore-daemonsets --force
옵션이 필요하다는 error가 뜹니다. 이것은 DaemonSet이라는 컨트롤러 때문인데, 원하는 drain 작업을 위해서는 이 컨트롤러를 무시하겠다는 옵션을 추가합니다.
(kubernetes의 컨트롤러에 대해서는 다음 시간에 자세히 다루겠습니다!)
worker2 노드를 drain하면 기존 모든 worker2 노드의 작업이 다른 노드인 worker3으로 넘어가는 것을 확인할 수 있습니다.
uncordon 후 생성한 webserver3 pod는 다시 worker2에 할당됩니다.
*** 이 때 drain으로 worker3에 옮겨진 pod들이 도로 돌아가는 것은 아닙니다.
이렇게 kubernetes에서는 cordon과 drain 명령어를 통해 노드를 비우는 작업을 수행할 수 있습니다.
'IaC > Kubernetes' 카테고리의 다른 글
[Kubernetes] livenessProbe (0) | 2023.04.14 |
---|---|
[Kubernetes] Init Container, Static Container (0) | 2023.04.07 |
[Kubernetes] Scale-out과 yaml 파일 수정 (0) | 2023.04.06 |
[Kubernetes] kubectl 명령어 정리 (0) | 2023.04.05 |
[Kubernetes] Kubernetes System: 컨테이너 관리의 자동화 (0) | 2023.04.05 |
- Total
- Today
- Yesterday
- EKS
- Azure DNS
- github
- Google Cloud DNS
- Route53 비용 정책
- VM Tools
- 에티버스러닝
- Windows Server
- Local Zones
- kubernetes
- RECA
- 클라우드 DNS 서비스
- vsphere
- Window Server Manager
- rocky9
- Git
- Docker
- Linux
- aws cli
- redhat
- Vmware
- k8s
- VPC
- Ansible
- IAM
- Route53
- ycampus
- AWS
- IAC
- kubectl
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |