끄적끄적
CKA Cluster 관련 몰랐던 사실 끄적..
leaf1991
2024. 9. 3. 23:24
- kubectl cordon 노드명
> cordon 명령어를 사용하게되면 해당 노드에 pod를 스케쥴링 못하게함
: Make node as unschedulable
- kubectl drain node01 --ignore-daemonsets
> 모든 애플리케이션의 노드를 비우고 예약 불가능으로 표시함 (unschedulable)
:: drain.으로 node를 비울경우 node01에 할당된 애플리케이션은 다른 노드로 옮겨가는데,
종료되고 다른 노드에 실행이 되는 것
controlplane ~ ➜ k drain node01 --ignore-daemonsets
node/node01 cordoned
Warning: ignoring DaemonSet-managed Pods: kube-flannel/kube-flannel-ds-2qgws, kube-system/kube-proxy-h8hld
evicting pod default/blue-fffb6db8d-lhbh5
evicting pod default/blue-fffb6db8d-2lmvl
pod/blue-fffb6db8d-2lmvl evicted
pod/blue-fffb6db8d-lhbh5 evicted
node/node01 drained
- kubectl uncordon node01
> 작업이 완료된 node에 다시 schedulable 하게 설정
- kubectl uncordon node01을 하게 될 경우 기존 node01에 애플리케이션이 다시 돌아오지 않는 이유는?
-> 1. 오직 새로이 생성되는 파드들만 node01에 스케쥴링이됨
2. controlplane node에 taints가 설정이 되어 있지 않을 경우 굳이 다시 변경되지 않음
- kubectl drain node01 --ignore-daemonsets이 error가 나는 경우
-> 단일 pod가 node01에 예약되어 있을 경우 drain 명령어가 작동하지 않음. 이 경우 --force 플래그를 통해 작업 진행이 가능함
kubectl drain node01 --ignore-daemonsets
node/node01 cordoned
error: unable to drain node "node01" due to error:cannot delete cannot delete Pods that declare no controller (use --force to override): default/hr-app, continuing command...
There are pending nodes to be drained:
node01
cannot delete cannot delete Pods that declare no controller (use --force to override): default/hr-app
!!!! 하지만 --force 를 써서 해당 작업을 진행하게되면 pod가 완전 삭제가 됨으로 하지 않는 것을 추천함!!!!
drain 보다 cordon 명령어를 사용하여 해당 노드에 새로운 pod가 scheduled 못하게 할 수 있음, 그리고 기존에 생성된 pod도 작업시 영향을 받지 않음