반응형

 

 

 

2023.05.17

★ node 갯수 확인

controlplane ~ ➜ kubectl get nodes NAME STATUS ROLES AGE VERSION controlplane Ready control-plane 17m v1.26.0 node01 Ready <none> 17m v1.26.0 controlplane ~ ➜

 

 

★ namespace가 default인 deploy를 찾아라

controlplane ~ ➜ kubectl get deployments.apps --namespace default NAME READY UP-TO-DATE AVAILABLE AGE blue 3/3 3 3 33s controlplane ~ ➜

 

 

★ node관리를 위해 node01을 제거해야 한다. 애플리케이션의 노드를 비우고 예약 불가능으로 표시해주세요.

controlplane ~ ➜ kubectl drain node01 --ignore-daemonsets node/node01 cordoned Warning: ignoring DaemonSet-managed Pods: kube-flannel/kube-flannel-ds-bjcqz, kube-system/kube-proxy-l6ln5 evicting pod default/blue-987f68cb5-jt66v evicting pod default/blue-987f68cb5-hw99q pod/blue-987f68cb5-hw99q evicted pod/blue-987f68cb5-jt66v evicted node/node01 drained controlplane ~ ➜

 

★ node관리 작업이 끝났다. 노드 node01을 다시 스케줄링할 수 있도록 구성

controlplane ~ ➜ kubectl uncordon node01 node/node01 uncordoned controlplane ~ ➜

 

 

★ uncordon으로 노드 node01을 스케줄링 했지만 pods가 생성되지 않습니다. 원인은?

 -> 노드에서 uncordon 명령을 실행해도 노드의 파드가 자동으로 스케줄링되지는 않습니다. 

 -> 새 파드가 생성되면 node01에 배치됩니다.

 

 

★ node01을 다시 drain 상태로 만들려고하는데 에러가 발생한다. 원인은?

 -> node01에 pod가 예약된 것을 볼 수 있다.
-> 해당 경우 drain 명령은 작동하지 않는다. 노드를 강제로 drain하려면 이제 --force 옵션을 사용해야 한다

controlplane ~ ➜ kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES blue-987f68cb5-gbbq8 1/1 Running 0 11m 10.244.0.5 controlplane <none> <none> blue-987f68cb5-gwvqs 1/1 Running 0 11m 10.244.0.4 controlplane <none> <none> blue-987f68cb5-njps9 1/1 Running 0 11m 10.244.0.6 controlplane <none> <none> hr-app 1/1 Running 0 3m29s 10.244.1.4 node01 <none> <none> controlplane ~ ➜

 

★ node01 강제로 drain 했을 경우 hr-app pod는 어떻게 될까?

 -> 사라져 버린다 ~

controlplane ~ ➜ kubectl drain node01 --ignore-daemonsets --force node/node01 already cordoned Warning: deleting Pods that declare no controller: default/hr-app; ignoring DaemonSet-managed Pods: kube-flannel/kube-flannel-ds-xhg7x, kube-system/kube-proxy-96vtg evicting pod default/hr-app pod/hr-app evicted node/node01 drained controlplane ~ ➜ controlplane ~ ➜ kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES blue-987f68cb5-gbbq8 1/1 Running 0 15m 10.244.0.5 controlplane <none> <none> blue-987f68cb5-gwvqs 1/1 Running 0 15m 10.244.0.4 controlplane <none> <none> blue-987f68cb5-njps9 1/1 Running 0 15m 10.244.0.6 controlplane <none> <none> controlplane ~ ➜

 

★ hr-app pod는 굉장히 중요하므로 복구한다음 위험한 node01 노드에 배포되지 않게 설정해야합니다.

controlplane ~ ➜ kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES blue-987f68cb5-gbbq8 1/1 Running 0 16m 10.244.0.5 controlplane <none> <none> blue-987f68cb5-gwvqs 1/1 Running 0 16m 10.244.0.4 controlplane <none> <none> blue-987f68cb5-njps9 1/1 Running 0 16m 10.244.0.6 controlplane <none> <none> hr-app-66c4c9c67f-78hm7 1/1 Running 0 47s 10.244.1.5 node01 <none> <none> controlplane ~ ➜ controlplane ~ ➜ kubectl cordon node01 node/node01 cordoned controlplane ~ ➜

 

 

반응형

+ Recent posts