VM 인스턴스 수명 주기 관리

VM 인스턴스는 수명 주기 동안 여러 상태로 전환될 수 있습니다. VM을 만들면 Google Distributed Cloud (GDC) 에어갭이 VM을 시작하기 위해 리소스를 프로비저닝합니다. 그런 다음 VM이 시작 상태로 전환되고 여기에서 첫 번째 부팅을 준비합니다. 시작 중 및 시작 후에는 VM이 실행 중인 것으로 간주됩니다. 수명 주기 동안 실행되는 VM은 중지, 재시작 또는 일시중지, 재개가 반복해서 이뤄질 수 있습니다.

VM 상태 정의

정의
Pending VM이 시스템에 의해 수락되었으며 할당을 기다리고 있습니다.
Provisioning VirtualMachineDisk과 같은 VM과 연결된 리소스가 프로비저닝되고 준비되고 있습니다.
Starting VM이 실행되도록 준비 중입니다.
Running VM이 실행 중입니다.
Stopping VM이 중지되는 중입니다.
Stopped VM이 중지되었으며 시작되지 않을 것으로 예상됩니다.
Paused VM이 일시중지되고 고정된 상태로 유지됩니다. VM에 액세스할 수 없습니다.
Terminating VM과 연결된 리소스가 삭제 프로세스를 진행 중입니다.
ErrorConfiguration VM에 구성 오류가 있습니다. 잘못된 구성 상태는 다음과 같은 이유로 발생할 수 있습니다.
MachineTypeNotFound - VM이 참조하는 VM 유형을 찾을 수 없거나 삭제 중입니다.
MachineDiskMisconfig - VM 디스크가 잘못 구성되었습니다.
InterfaceCreationFailed - 네트워크 인터페이스를 만들 수 없습니다.
CrashLoopBackOff VM이 비정상 종료 루프에 있으며 재시도를 기다리고 있습니다.
PendingIPAllocation VM이 시스템에서 IP 주소를 할당해 주기를 기다리고 있습니다.
Unknown VM 상태를 가져올 수 없습니다. 일반적으로 VM이 실행되는 호스트와의 통신에 오류가 있기 때문입니다.
ErrorUnschedulable VM을 예약하는 중에 오류가 발생했습니다. 예를 들어 충족하거나 지원할 수 없는 리소스 요청 또는 예약 제약 조건 때문일 수 있습니다.
DiskError VM에 연결된 디스크 중 하나 이상에 오류가 있습니다.
WaitingForDisk VM이 연결된 VirtualMachineDisk 중 하나 이상이 준비되기를 기다리고 있습니다.
CrashLoopBackoff VM이 어떤 이유로든 지속적으로 비정상 종료됩니다.

시작하기 전에

gdcloud 명령줄 인터페이스 (CLI) 명령어를 사용하려면 gdcloud CLI를 다운로드, 설치, 구성해야 합니다. Distributed Cloud의 모든 명령어는 gdcloud 또는 kubectl CLI를 사용하며 운영체제 (OS) 환경이 필요합니다.

kubeconfig 파일 경로 가져오기

관리 API 서버에 대해 명령어를 실행하려면 다음 리소스가 있어야 합니다.

  1. 관리 API 서버의 kubeconfig 파일이 없는 경우 로그인 및 생성합니다.

  2. 관리 API 서버의 kubeconfig 파일 경로를 사용하여 이 안내의 MANAGEMENT_API_SERVER를 바꿉니다.

권한 및 액세스 요청

이 페이지에 나열된 작업을 수행하려면 프로젝트 VirtualMachine 관리자 역할이 있어야 합니다. 단계를 따라 VM이 있는 프로젝트의 네임스페이스에 프로젝트 VirtualMachine 관리자 (project-vm-admin) 역할이 있는지 확인합니다.

GDC 콘솔 또는 gdcloud CLI를 사용하는 VM 작업의 경우 프로젝트 IAM 관리자에게 프로젝트 VirtualMachine 관리자 역할과 프로젝트 뷰어 (project-viewer) 역할을 모두 할당해 달라고 요청하세요.

VM 상태 확인

모든 VM이 VM 속성의 일부로 해당 상태를 보고합니다. 다음과 같은 이유로 VM 상태를 확인합니다.

  • VM에 문제가 있는 경우
  • VM이 시작된 후 실행 중인지 확인합니다.
  • VM이 Paused 또는 Stopped 상태인지 확인합니다.

VM을 나열하여 상태 확인

다음 절차에서는 VM을 나열하고, 상태를 확인하고, 추가 상태 정보를 가져오는 방법을 보여줍니다.

  1. 모든 VM을 나열하고 각 VM의 상태를 확인합니다.

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
        get virtualmachines.virtualmachine.gdc.goog -n PROJECT
    

    다음 표에 따라 코드 예시의 변수를 자체 값으로 바꿉니다.

    변수정의
    MANAGEMENT_API_SERVER 관리 API 서버 kubeconfig 파일입니다.
    PROJECT VM이 상주하는 GDC 프로젝트입니다.

    출력 예시:

    NAME          STATUS                    AGE
    vm-1          Running                    1d
    vm-2          Stopped                    8d
    vm-3          ErrorConfiguration         1d
    
  2. 특정 VM의 상태에 관한 추가 세부정보를 가져옵니다.

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
        get virtualmachines.virtualmachine.gdc.goog VM_NAME -n PROJECT -o \
        jsonpath='{"State:"}{.status.state}{"\n"}{"Reason:"}{.status.reason}{"\n"}{"Message:"}{.status.message}{"\n"}'
    

    다음을 바꿉니다.

    • MANAGEMENT_API_SERVERgdcloud auth login 명령어로 가져온 관리 API 서버의 kubeconfig 파일로 바꿉니다.
    • VM_NAME을 새 VM의 이름으로 바꿉니다.
    • PROJECT를 VM이 상주하는 GDC 프로젝트로 바꿉니다.

    ReasonMessage 값을 보여주는 출력 예시:

    State: ErrorConfiguration
    Reason: MachineDiskNotFound
    Message: VirtualMachineDisk disk-1 in namespace project-1 does not exist.
    

    ReasonMessage 필드가 비어 있을 수도 있습니다. 이는 시스템에서 보고할 사항이 없음을 나타냅니다.

    ReasonMessage이 비어 있는 출력 예시:

    State: Running
    Reason:
    Message:
    

VM 중지 또는 다시 시작

VM 수명 주기 동안 상태 변경에 대응하거나 VM을 일반적으로 관리하기 위해 VM을 중지하고 다시 시작하거나 VM을 삭제해야 할 수 있습니다. VM을 중지, 재설정 또는 삭제하려면 다음 페이지를 참고하세요.