Recent Comments
Link
Recent Posts
Today
Total
«   2025/03   »
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 31
관리 메뉴

Study Memory Work

[K8S/CKA 자격증] Worloads & Scheduling - node 관리 본문

Infra/Kubernetes

[K8S/CKA 자격증] Worloads & Scheduling - node 관리

Hera Choi 2023. 1. 22. 16:18

노드관리

pod가 실행되는 노드인 worker node를 대상으로 특정 worker노드에 scheduling을 허용하거나 금지하고싶을 때, worker node내 pod들을 비워서 cluster member에서 제외하고 싶을 때 등등

Node 스케줄링 중단 및 허용

  • 컨테이너를 포함한 Pod는 node에서 실행됨
  • node는 Control-plane에 의해 관리
  • 특정node의스케줄링중단(cordon)및 허용(uncordon)
    • kubectl cordon <NODE_NAME>    : 특정 worker node 에서 scheduling에 대해 disabled상태로 만들고
    • kubectl uncordon <NODE_NAME>   : abled상태로 만든다.
k8s-worker2 node에 cordon 명렁어를 내리고 난 후, STATUS에 SchedultingDisabled 상태로 바뀐것을 볼 수 있다.

 

Node 비우기(drain)

  • 특정 node 에서 실행중인 pod 비우기(drain) 및 제거(delete)
    ( deployment를 이용하여 컨테이너갯수를 항상 보장받도록 Pod를 생성했다면 한 node 내에 모든 pod를 삭제 했다면 pod는 갯수를 보장해주는 controller에 의해 다른 node에서 다시 실행된다.)
  • drain 명령 시, 내부 Pod 가 모두 비워지고, 자동적으로 SchedulDisabled 상태가 된다(cordon)
  • 항상 따라오는 옵션 :  
    • --ignore-daemonsets    : DaemonSet-managed pod들은 ignore. 일반 drain 명령으로는 삭제할 수 없으므로 ignore 시켜주어야 한다.
                        * DaemonSet : 애플리케이션 Pod가 아닌, Cube-proxy, CNI interface .. 등의 Pod. 
    • --force=false   : RC, RS, Job,  DaemonSet 또는 StatefulSet에서 관리하지 않는 Pod까지 제거.
            -> controller 제어없이 단독으로 생성된 Pod들까지 모두 삭제하기 위해 넣어주는 옵션.
$ kubectl drain <NODE_NAME> --ignore-daemonsets –force

 

 


[문제8] 노드 비우기

작업 클러스터 : k8s
k8s-worker2 노드를 스케줄링 불가능하게 설정하고, 해당 노드에서 실행 중인 모든 Pod을 다른 nodereschedule 하세요.

# 1. 노드 비우기(drain)
kubectl drain --ignore-daemonsets --force k8s-worker2