5.2. 노드 작업

관리자는 여러 작업을 수행하여 클러스터의 효율성을 높일 수 있습니다.

5.2.1. 노드에서 Pod를 비우는 방법 이해

Pod를 비우면 하나 이상의 지정된 노드에서 모든 Pod 또는 선택한 Pod를 마이그레이션할 수 있습니다.

복제 컨트롤러에서 지원하는 Pod만 비울 수 있습니다. 복제 컨트롤러는 다른 노드에서 새 Pod를 생성하고 지정된 노드에서 기존 Pod를 제거합니다.

복제 컨트롤러에서 지원하지 않는 베어 Pod는 기본적으로 영향을 받지 않습니다. Pod 선택기를 지정하여 Pod의 하위 집합을 비울 수 있습니다. Pod 선택기는 라벨을 기반으로 하므로 라벨이 지정된 Pod를 모두 비웁니다.

프로세스

  1. Pod 비우기를 수행하기 전에 노드를 예약 불가능으로 표시합니다.

    1. 노드를 예약 불가능으로 표시합니다.

      $ oc adm cordon <node1>

      출력 예

      node/<node1> cordoned

    2. 노드 상태가 Ready,SchedulingDisabled 인지 확인합니다.

      $ oc get node <node1>

      출력 예

      NAME        STATUS                     ROLES     AGE       VERSION
      <node1>     Ready,SchedulingDisabled   worker    1d        v1.24.0

  2. 다음 메서드 중 하나를 사용하여 Pod를 비웁니다.

    • 하나 이상의 노드에 있는 모든 Pod 또는 선택한 Pod를 비웁니다.

      $ oc adm drain <node1> <node2> [--pod-selector=<pod_selector>]
    • --force 옵션을 사용하여 베어 Pod를 강제 삭제합니다. true로 설정하면 복제 컨트롤러, 복제본 세트, 작업, 데몬 세트 또는 상태 저장 세트에서 관리하지 않는 Pod가 있는 경우에도 계속 삭제합니다.

      $ oc adm drain <node1> <node2> --force=true
    • --grace-period 를 사용하여 각 Pod가 정상적으로 종료되는 시간(초)을 설정합니다. 음수인 경우 Pod에 지정된 기본값이 사용됩니다.

      $ oc adm drain <node1> <node2> --grace-period=-1
    • true로 설정된 --ignore-daemonsets 플래그를 사용하여 데몬 세트에서 관리하는 Pod를 무시합니다.

      $ oc adm drain <node1> <node2> --ignore-daemonsets=true
    • --timeout 플래그를 사용하여 종료하기 전에 대기하는 시간을 설정합니다. 값이 0이면 시간이 제한되지 않습니다.

      $ oc adm drain <node1> <node2> --timeout=5s
    • --delete-local-data 플래그가 true로 설정된 emptyDir를 사용하는 Pod가 있는 경우에도 Pod를 삭제합니다. 노드가 드레이닝되면 로컬 데이터가 삭제됩니다.

      $ oc adm drain <node1> <node2> --delete-local-data=true
    • --dry-run 옵션을 true로 설정하여 실제로 비우기를 수행하지 않고 마이그레이션할 오브젝트를 나열합니다.

      $ oc adm drain <node1> <node2>  --dry-run=true

      특정 노드 이름(예: <node1> <node2>)을 지정하는 대신 --selector=<node_selector> 옵션을 사용하여 선택한 노드에서 Pod를 비울 수 있습니다.

  3. 완료되면 노드를 예약 가능으로 표시합니다.

    $ oc adm uncordon <node1>