8.8. 실패한 노드를 해결하여 가상 머신 장애 조치 트리거

노드가 실패하고 머신 상태 점검이 클러스터에 배포되지 않으면 RunStrategy가 있는 VM(가상 머신)이 포함됩니다. always 구성된 위치는 자동으로 정상 노드로 재배치되지 않습니다. VM 장애 조치를 트리거하려면 Node 오브젝트를 수동으로 삭제해야 합니다.

참고

설치 관리자 프로비저닝 인프라를 사용하여 클러스터를 설치하고 머신 상태 점검을 올바르게 구성한 경우

  • 실패한 노드는 자동으로 재활용됩니다.
  • RunStrategyAlways 또는 RerunOnFailure로 설정된 가상 머신은 정상 노드에 자동으로 예약됩니다.

8.8.1. 사전 요구 사항

  • 가상 머신을 실행 중이던 노드에 NotReady 조건이 있습니다.
  • 실패한 노드에서 실행 중이던 가상 머신의 RunStrategyAlways로 설정되어 있습니다.
  • OpenShift CLI(oc)가 설치되어 있습니다.

8.8.2. 베어 메탈 클러스터에서 노드 삭제

CLI를 사용하여 노드를 삭제하면 Kubernetes에서 노드 오브젝트가 삭제되지만 노드에 존재하는 Pod는 삭제되지 않습니다. 복제 컨트롤러에서 지원하지 않는 기본 Pod는 OpenShift Container Platform에 액세스할 수 없습니다. 복제 컨트롤러에서 지원하는 Pod는 사용 가능한 다른 노드로 다시 예약됩니다. 로컬 매니페스트 Pod를 삭제해야 합니다.

절차

다음 단계를 완료하여 베어 메탈에서 실행 중인 OpenShift Container Platform 클러스터에서 노드를 삭제합니다.

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

    $ oc adm cordon <node_name>
  2. 노드의 모든 Pod를 드레이닝합니다.

    $ oc adm drain <node_name> --force=true

    노드가 오프라인 상태이거나 응답하지 않는 경우 이 단계가 실패할 수 있습니다. 노드가 응답하지 않더라도 공유 스토리지에 쓰는 워크로드를 계속 실행되고 있을 수 있습니다. 데이터 손상을 방지하려면 계속하기 전에 물리적 하드웨어의 전원을 끕니다.

  3. 클러스터에서 노드를 삭제합니다.

    $ oc delete node <node_name>

    노드 오브젝트가 클러스터에서 삭제되어도 재부팅 후 또는 kubelet 서비스가 재시작되면 클러스터에 다시 참여할 수 있습니다. 노드와 노드의 모든 데이터를 영구적으로 삭제하려면 노드를 해제해야 합니다.

  4. 물리 하드웨어의 전원을 끈 경우 노드가 클러스터에 다시 참여할 수 있도록 해당 하드웨어를 다시 켭니다.

8.8.3. 가상 머신 장애 조치 확인

비정상 노드에서 모든 리소스가 종료되면 VM이 재배치될 때마다 정상 노드에 새 VMI(가상 머신 인스턴스)가 자동으로 생성됩니다. VMI가 생성되었는지 확인하려면 oc CLI를 사용하여 모든 VMI를 확인합니다.

8.8.3.1. CLI를 사용하여 모든 가상 머신 인스턴스 나열

oc CLI(명령줄 인터페이스)를 사용하면 독립 실행형 VMI(가상 머신 인스턴스) 및 가상 머신에 속하는 VMI를 포함하여 클러스터의 모든 VMI를 나열할 수 있습니다.

절차

  • 다음 명령을 실행하여 VMI를 모두 나열합니다.

    $ oc get vmis