노드 명령어

  1. kubectl get nodes → node 개 수, 상태, 버전 등 확인

    ⇒ ex) k8s-master, k8s-worker1, k8s-worker2 존재한다고 가정

  2. kubectl get nodes -o wide → 더 많은 정보

  3. kubectl descirbe node k9s-worker1

  4. kubectl get pods -o wide → pod들이 속해있는 node명 확인 가능

  5. kubectl cordon k8s-worker1 → replica로 pod 개 수를 늘리면 worker1,2에 골구로 분포가 되는데 cordon 명령어로 더 이상 worker1이 스케줄링을 받지 않는다고 명령하면 replica 수를 확장했을때 모든 pod들이 worker2에 할당됌. 기존에 할당 된 pod들은 존재

  6. kubectl uncordon k8s-worker1 → 다시 스케줄링 가능하도록 상태 설정(스케줄링 금지)

  7. kubectl drain k8s-worker2 → worker2에 있는 모든 pod를 삭제하고 다른 곳으로 이동(스케줄링 금지 + 기존 pod 삭제) 기존에 있던 pod들도 삭제(cordon과의 차이)

    6-1. 하지만 kube-flannel, kube-proxy에도 사용이 되어 사용이 안된다고 안내해줌

    6-2. 위 안내를 무시하고 그냥 삭제할려면 —ignore-daemonsets을 뒤에 붙여주면

  8. kubectl uncordon k8s-worker2 → 다시 스케줄링 받도록 상태 설정, 하지만 전에 할당 된 pod들이 다시 worker2로 돌아오진 않음

Untitled

답안

  1. kubectl config use-context k8s-worker1

  2. kubectl drain k8s-worker1 ⇒ kubectl commands(공홈) → drain에 존재, node가 unavailalbe하고 reschedule한 상태이면 drain해줘야함, cordon아님.

    ⇒ 이렇게만 명령어 작성 시 오류 발생

  3. kubectl drain k8s-woreker1 —ignore-daemonsets —force ⇒ 위에 설명한거 처럼 뒤에 더 붙여주고, —force도 추가해도 삭제가 안됌.

  4. kubectl drain k8s-worker1 —ignore-daemonsets —forc —delete-emptydir-data ⇒ 안내해준 추가 명령어를 뒤에 붙여서 실행하면 삭제가

⇒ 시험에서는 3번에서 삭제가 될 수 있음, 그래서 삭제가 안될 시 안내 명령어 잘 살펴보고 추가