빠른 시작: Google Distributed Cloud 클러스터에서 VM 만들기

이 빠른 시작에서는 GDC용 VM 런타임을 사용하여 Google Distributed Cloud에서 가상 머신(VM)을 만드는 방법을 설명합니다. GDC용 VM 런타임은 KubeVirt를 사용하여 클러스터에서 VM을 조정하므로 동일한 개발 환경에서 VM 기반 앱과 워크로드를 사용할 수 있습니다.

시작하기 전에

이 빠른 시작을 완료하려면 Google Distributed Cloud 버전 1.12(anthosBareMetalVersion: 1.12) 이상의 클러스터에 액세스할 수 있어야 합니다. 워크로드 실행이 가능한 모든 클러스터 유형을 사용할 수 있습니다. 필요한 경우 Compute Engine에서 Google Distributed Cloud를 사용해 보거나 클러스터 만들기 개요를 참조하세요.

GDC용 VM 런타임 사용 설정

Google Distributed Cloud 버전 1.10 이상에서는 GDC용 VM 런타임이 자동으로 설치되지만 기본적으로 중지되어 있습니다. Google Distributed Cloud에서 VM 리소스를 실행하려면 먼저 GDC용 VM 런타임을 사용 설정해야 합니다.

bmctl

Google Distributed Cloud 버전 1.11 이상에서는 bmctl 명령줄 도구를 사용할 수 있습니다.

  • 런타임을 사용 설정하려면 bmctl 도구를 사용합니다.

    bmctl enable vmruntime --kubeconfig KUBECONFIG_PATH
    

    클러스터의 kubeconfig 파일 경로를 제공합니다. 클러스터를 만들면 Google Distributed Cloud가 kubeconfig 파일을 관리자 워크스테이션에 생성합니다. 기본적으로 경로는 bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig입니다.

    GDC용 VM 런타임이 이미 사용 설정되어 있으면 명령어에서 오류를 반환합니다.

커스텀 리소스

Google Distributed Cloud 버전 1.10 이상은 커스텀 리소스 정의를 사용하여 GDC용 VM 런타임을 사용 설정할 수 있습니다. 이 커스텀 리소스는 기본적으로 설치되어 있습니다.

  1. VMRuntime 커스텀 리소스를 수정합니다.

    kubectl edit vmruntime
    
  2. 사양에서 enabled:true를 설정합니다.

    apiVersion: vm.cluster.gke.io/v1
    kind: VMRuntime
    metadata:
      name: vmruntime
    spec:
      enabled: true
      # useEmulation defaults to "false" if not set.
      useEmulation: true
      # vmImageFormat defaults to "qcow2" if not set.
      vmImageFormat: qcow2
    

    앞의 spec 섹션에서 다음 값을 설정할 수 있습니다.

    • enabled: GDC용 VM 런타임을 사용 설정하려면 true로 설정합니다.
    • useEmulation: 노드가 하드웨어 가상화를 지원하지 않거나 확실하지 않으면 값을 true로 설정합니다. 사용 가능한 경우 하드웨어 가상화에서 소프트웨어 에뮬레이션보다 우수한 성능을 제공합니다. useEmulation 필드가 지정되지 않으면 기본값은 false입니다.
    • vmImageFormat: 두 가지 디스크 이미지 형식 값인 rawqcow2를 지원합니다. vmImageFormat을 설정하지 않으면 GDC용 VM 런타임에서 raw 디스크 이미지 형식을 사용하여 VM을 만듭니다. raw 형식은 쓰기 형식의 사본인 qcow2보다 우수한 성능을 제공할 수 있지만 더 많은 디스크를 사용할 수 있습니다. VM의 이미지 형식에 대한 자세한 내용은 QEMU 문서의 디스크 이미지 파일 형식을 참조하세요.
  3. 편집기에서 커스텀 리소스를 저장합니다.

  4. VMRuntime 커스텀 리소스가 사용 설정되었는지 확인합니다.

    kubectl describe vmruntime vmruntime
    

    VMRuntime 커스텀 리소스의 세부정보에는 Status 섹션이 포함됩니다. VMRuntime.Status.Readytrue로 표시되면 GDC용 VM 런타임이 사용 설정되고 작동 중입니다.

virtctl 클라이언트 도구 설치

VM을 만들고 관리하려면 virtctl 클라이언트 도구를 설치합니다.

  1. virtctl 클라이언트 도구를 kubectl 플러그인으로 설치합니다.

    export GOOGLE_APPLICATION_CREDENTIALS="PATH_TO_SERVICE_ACCOUNT_KEY/bm-gcr.json"
    sudo -E bmctl install virtctl
    

    사용자 인증 정보를 사용해서 인증을 수행하고 virtctl 클라이언트 도구를 다운로드한 후 /usr/bin/kubectl-virt를 로컬 머신에 설치할 수 있습니다.

  2. virtctl 플러그인이 설치되었는지 확인합니다.

    kubectl plugin list
    

    응답에 kubectl-virt가 나열되었으면 플러그인이 성공적으로 설치되어 것입니다.

    kubectl-virt가 나열되지 않으면 bmctl-workspace/log/install-virtctl-[date]/install-virtctl.log와 같이 이전 bmctl install 명령어 결과에 표시된 대로 install-virtctl.log 파일을 확인합니다.

VM 만들기

이 빠른 시작에서는 kubectl CLI를 사용하여 공개 VM 이미지와 기본 사용자 인증 정보를 사용하는 VM을 만듭니다.

  1. 클러스터에 VM을 만듭니다. virtctl 플러그인은 kubectl 명령어와 함께 사용됩니다.

    kubectl virt create vm VM_NAME \
        --image ubuntu20.04 \
        --configure-initial-password USERNAME:PASSWORD
    

    이 명령어는 Ubuntu 20.04 VM과 2 CPU, 4Gi 메모리, local-shared 스토리지 클래스를 사용하는 ReadWriteOnce 모드의 20Gi 부팅 디스크를 기본적으로 만듭니다. 다음 값을 바꿉니다.

    • VM_NAME: VM의 이름입니다. VM 이름에 소문자 영숫자 문자나 '-'만 사용해야 하며 이름은 영숫자 문자로 시작하고 끝나야 하며 63자 이하여야 합니다. 자세한 내용은 Kubernetes 문서의 RFC 1123 라벨 이름을 참조하세요.
    • USERNAME: VM에서 만들려는 계정의 사용자 이름입니다.
    • PASSWORD: 사용자 계정의 비밀번호입니다.

    CLI 매개변수에 대한 오류가 수신되면 클러스터 버전이 1.11.1 이상이고 virtctl 클라이언트 도구가 최신 버전인지 확인합니다. CLI 오류에 대한 자세한 내용은 콘솔 로그를 참조하세요. 사용자 이름 및 비밀번호 규칙은 게스트 운영체제(OS) 문서를 참조하세요. 예상대로 작동하지 않으면 GDC용 VM 런타임에서 알려진 문제를 확인하세요.

  2. VM을 만드는 데 몇 분 정도 걸릴 수 있습니다. kubectl 명령어로 VM 상태를 확인합니다.

    kubectl get gvm
    

    다음 출력 예시는 Running 상태의 VM을 보여줍니다.

    NAME         STATUS    AGE   IP
    vm-sample1   Running   64s   192.168.2.124
    

VM에 연결

VM이 실행 중이면 VM의 콘솔에 연결합니다.

  1. 콘솔에서 VM에 액세스하려면 kubectl을 사용합니다.

    kubectl virt console VM_NAME
    
  2. 메시지가 표시되면 지정된 사용자 인증 정보를 입력하여 VM을 만듭니다.

  3. VM의 콘솔에 성공적으로 연결된 후 VM 세션 및 콘솔을 종료합니다.

    Ctrl + ]
    

삭제

이 빠른 시작에서 만든 리소스를 삭제하려면 다음 단계를 따르세요.

  1. VM 및 연결된 DataVolume을 삭제하려면 kubectl을 사용합니다.

    kubectl virt delete vm VM_NAME --all
    

다음 단계