5.3. 노드를 유지보수 모드로 설정

NodeMaintenance CR을 사용하여 웹 콘솔 또는 CLI에서 노드를 유지보수 모드에 배치할 수 있습니다.

5.3.1. 웹 콘솔을 사용하여 노드를 유지보수 모드로 설정

노드를 유지보수 모드로 설정하려면 웹 콘솔을 사용하여 NodeMaintenance CR(사용자 정의 리소스)을 생성할 수 있습니다.

사전 요구 사항

  • cluster-admin 권한이 있는 사용자로 로그인합니다.
  • OperatorHub 에서 Node Maintenance Operator를 설치합니다.

절차

  1. 웹 콘솔의 관리자 화면에서 Operator → 설치된 Operator 로 이동합니다.
  2. Operator 목록에서 Node Maintenance Operator를 선택합니다.
  3. Node Maintenance 탭에서 NodeMaintenance 생성을 클릭합니다.
  4. NodeMaintenance 생성 페이지에서 양식 보기 또는 YAML 보기 를 선택하여 NodeMaintenance CR을 구성합니다.
  5. 구성한 NodeMaintenance CR을 적용하려면 생성을 클릭합니다.

검증

Node Maintenance 탭에서 Status 열을 검사하고 해당 상태가 Succeeded 인지 확인합니다.

5.3.2. CLI를 사용하여 노드를 유지보수 모드로 설정

NodeMaintenance CR(사용자 정의 리소스)을 사용하여 노드를 유지관리 모드에 배치할 수 있습니다. NodeMaintenance CR을 적용하면 허용되는 모든 Pod가 제거되고 노드가 예약되지 않습니다. 제거된 Pod는 클러스터의 다른 노드로 이동하기 위해 대기열에 있습니다.

사전 요구 사항

  • Red Hat OpenShift CLI oc 를 설치합니다.
  • cluster-admin 권한이 있는 사용자로 클러스터에 로그인합니다.

절차

  1. 다음 NodeMaintenance CR을 생성하고 파일을 nodemaintenance-cr.yaml 로 저장합니다.

    apiVersion: nodemaintenance.medik8s.io/v1beta1
    kind: NodeMaintenance
    metadata:
      name: nodemaintenance-cr  1
    spec:
      nodeName: node-1.example.com 2
      reason: "NIC replacement" 3
    1
    노드 유지보수 CR의 이름입니다.
    2
    유지보수 모드에 배치할 노드의 이름입니다.
    3
    유지 관리 이유에 대한 일반 텍스트 설명입니다.
  2. 다음 명령을 실행하여 노드 유지보수 CR을 적용합니다.

    $ oc apply -f nodemaintenance-cr.yaml

검증

  1. 다음 명령을 실행하여 유지 관리 작업의 진행 상황을 확인합니다.

    $ oc describe node <node-name>

    여기서 <node-name >은 노드의 이름입니다(예: node-1.example.com).

  2. 예제 출력을 확인합니다.

    Events:
      Type     Reason                     Age                   From     Message
      ----     ------                     ----                  ----     -------
      Normal   NodeNotSchedulable         61m                   kubelet  Node node-1.example.com status is now: NodeNotSchedulable

5.3.3. 현재 NodeMaintenance CR 작업의 상태 확인

현재 NodeMaintenance CR 작업의 상태를 확인할 수 있습니다.

사전 요구 사항

  • Red Hat OpenShift CLI oc 를 설치합니다.
  • cluster-admin 권한이 있는 사용자로 로그인합니다.

절차

  • 다음 명령을 실행하여 현재 노드 유지관리 작업의 상태를 확인합니다(예: NodeMaintenance CR 또는 nm 오브젝트).

    $ oc get nm -o yaml

    출력 예

    apiVersion: v1
    items:
    - apiVersion: nodemaintenance.medik8s.io/v1beta1
      kind: NodeMaintenance
      metadata:
    ...
      spec:
        nodeName: node-1.example.com
        reason: Node maintenance
      status:
        drainProgress: 100   1
        evictionPods: 3   2
        lastError: "Last failure message" 3
        lastUpdate: "2022-06-23T11:43:18Z" 4
        phase: Succeeded
        totalpods: 5 5
    ...

    1
    노드 드레이닝의 백분율입니다.
    2
    제거 예약된 Pod 수입니다.
    3
    최신 제거 오류(있는 경우)입니다.
    4
    상태가 마지막으로 업데이트된 시간입니다.
    5
    노드가 유지보수 모드에 진입하기 전의 총 Pod 수입니다.