가상 디스크 가져오기

필요한 소프트웨어 및 구성이 포함된 가상 디스크가 온프레미스 환경에 있는 경우(골든 디스크 또는 골든 이미지라고도 함) 이러한 가상 디스크를 Distributed Cloud로 가져오고 결과 이미지를 사용하여 가상 머신을 만들어 시간을 절약할 수 있습니다. 가져오기 도구는 RAW 및 QCOW 이미지 형식을 지원합니다.

시작하기 전에

계속하기 전에 다음 사항을 확인하세요.

  • gdcloud CLI가 다운로드, 설치, 구성되어 있습니다. GDC의 모든 CLI 명령어는 gdcloud 또는 kubectl CLI를 사용하며 운영체제 (OS) 환경이 필요합니다.
  • Kubernetes 클러스터에 대한 로그인 액세스 권한 로그인의 CLI 단계에 따라 Kubernetes 클러스터에 로그인합니다.

권한 및 액세스 요청

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

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

가상 디스크 가져오기

gdcloud CLI 또는 Virtual Machine Manager API를 사용하여 가상 디스크를 가져올 수 있습니다.

이미지를 가져오는 데 필요한 권한을 얻으려면 조직 IAM 관리자에게 프로젝트에 대한 프로젝트 VirtualMachine 이미지 관리자(project-vm-image-admin) 역할을 부여해 달라고 요청하세요.

gdcloud

gdcloud compute images import 명령어를 사용하여 부팅 가능한 이미지를 만듭니다.

import 명령어를 사용하면 Linux의 보안 셸 (SSH)과 Windows의 원격 데스크톱 프로토콜 (RDP)을 사용하여 인스턴스에 연결하는 데 필요한 게스트 환경을 비롯한 필수 패키지가 디스크에 포함됩니다.

Linux에서 이 명령어는 인스턴스가 GDC에서 올바르게 실행되도록 네트워크 시간 프로토콜 (NTP) 및 cloud-init 패키지도 설치합니다.

워크스테이션에서 직접 가상 디스크 파일을 가져올 수 있습니다. 가져오기 도구는 파일을 프로젝트의 객체 스토리지 버킷에 자동으로 업로드합니다.

gdcloud compute images import IMAGE_NAME \
  --source-file=SOURCE_FILE \
  --os=IMAGE_OS \
  --timeout=TIMEOUT

다음 변수를 바꿉니다.

  • IMAGE_NAME: 대상 이미지의 이름입니다. 이름은 35자(영문 기준) 이하여야 합니다.
  • SOURCE_FILE: 가상 디스크 파일입니다. 이 파일은 워크스테이션의 로컬 파일입니다. 절대 경로 또는 상대 경로를 제공할 수 있습니다.
  • IMAGE_OS: 가져올 디스크의 OS입니다.
  • TIMEOUT: 가져오기가 'TIMEOUT'으로 실패하기 전에 지속될 수 있는 시간입니다. 예를 들어 2h를 지정하면 2시간 후에 프로세스가 실패합니다. 기본 제한 시간은 1h입니다.

가상 디스크의 크기와 네트워크 연결 속도에 따라 업로드 작업에 시간이 오래 걸릴 수 있습니다. 디스크 크기에 따라 가져오기 작업을 실행하는 데 수십 분이 걸릴 수 있습니다.

API

API를 사용하여 가져오기 프로세스를 시작하기 전에 가상 디스크를 vm-images-bucket라는 객체 스토리지 버킷에 업로드해야 합니다. 객체 스토리지 버킷을 만들려면 프로젝트용 스토리지 버킷 만들기를 참고하세요.

API를 통해 가상 디스크를 가져오려면 다음 단계를 따르세요.

  1. 관리 API 서버에서 VirtualMachineImageImport 객체를 만들어 이미지 가져오기 프로세스를 시작합니다.

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
      apply -n PROJECT_ID -f - <<EOF
    apiVersion: virtualmachine.gdc.goog/v1
    kind: VirtualMachineImageImport
    metadata:
      name: IMAGE_NAME
      namespace: PROJECT_ID
    spec:
      source:
        objectStorage:
          bucketRef:
            name: vm-images-bucket
          objectName: SOURCE_FILE
      imageMetadata:
        name: IMAGE_NAME
        operatingSystem: OPERATING_SYSTEM
        minimumDiskSize: DISK_SIZE
    EOF
    

    다음 변수를 바꿉니다.

    변수 설명
    IMAGE_NAME 가져올 이미지의 이름입니다. 이름은 35자(영문 기준) 이하여야 합니다.
    PROJECT_ID 이미지를 가져올 프로젝트의 프로젝트 ID입니다.
    SOURCE_FILE 객체 스토리지에 대한 가상 디스크 업로드가 포함된 소스 파일의 이름입니다. 이 값은 객체 스토리지 경로 중 vm-images-bucket/ 이후의 섹션입니다.
    OPERATING_SYSTEM 가져올 디스크의 OS입니다.
    DISK_SIZE 이 이미지로 생성해야 하는 디스크의 최소 크기입니다. 원본 이미지의 파일 시스템 크기 위에 20% 이상의 버퍼를 사용하는 것이 좋습니다. 예를 들어 원래 파일 시스템 크기가 10Gi인 가상 디스크에는 12Gi 이상을 사용합니다.
  2. VirtualMachineImageImport 객체의 상태를 쿼리하여 가져오기 진행 상황을 모니터링합니다.

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
      get virtualmachineimageimport --namespace PROJECT_ID \
      IMAGE_NAME -o jsonpath='{.status}'
    

리소스 삭제

가져오기 프로세스에는 가상 디스크 파일을 객체 스토리지에 업로드하는 작업이 포함됩니다. gdcloud CLI를 사용하는 경우 명령어의 성공 여부와 관계없이 명령어가 완료되면 객체가 정리됩니다. 명령어가 중단되거나 API를 사용하여 이미지 가져오기를 완료한 경우 파일을 수동으로 삭제할 때까지 가상 디스크 파일이 vm-images-bucket라는 객체 스토리지 버킷에 남아 있을 수 있습니다.

다음 단계

VM 만들기 및 시작 페이지에서 이미지를 사용하는 새 VM 인스턴스를 만듭니다.