베어메탈용 GKE에 있는 ISO 이미지에서 Windows VM 만들기

이 문서에서는 Google Distributed Cloud의 VM 런타임을 사용하여 ISO에서 부팅하는 Windows 가상 머신(VM)을 만드는 방법을 보여줍니다. VM이 부팅되면 Windows 설정 루틴을 수동으로 완료합니다.

또한 HTTP 소스 또는 Cloud Storage를 사용하여 준비된 디스크 이미지로부터 Windows VM을 만들 수 있습니다.

시작하기 전에

이 문서를 완료하려면 다음 리소스에 대해 액세스 권한이 필요합니다.

ISO 이미지의 가상 디스크 만들기

Windows VM을 성공적으로 만들기 위해서는 이 문서의 단계 및 섹션을 순서대로 수행하세요.

Windows ISO 이미지에서 부팅하려면 먼저 diskTypecdromVirtualMachineDisk를 만듭니다. Windows ISO를 이 디스크의 소스로 사용합니다.

  1. 원하는 편집기에서 windows-iso.yaml과 같은 VirtualMachineDisk 매니페스트를 만듭니다.

    nano windows-iso.yaml
    
  2. 다음 YAML 매니페스트를 복사하여 붙여넣습니다.

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineDisk
    metadata:
      name: windows-iso
    spec:
      source:
        http:
          url: IMG_URL
      size: 10Gi
      diskType: cdrom
    

    IMG_URL을 Windows ISO의 HTTP 경로로 바꿉니다. 또한 Cloud Storage에서 ISO를 가져오도록 사용자 인증 정보를 만들고 사용할 수 있습니다.

  3. 편집기에서 매니페스트를 저장하고 닫습니다.

  4. kubectl을 사용하여 VirtualMachineDisk를 만듭니다.

    kubectl apply -f windows-iso.yaml
    

VM 드라이버 디스크 만들기

Windows ISO로부터 성공적으로 부팅하고 설치 프로세스를 완료하려면 VM에 virtio 드라이버 액세스 권한이 필요합니다. VM에 virtio 드라이버를 제공하려면 다음 단계를 완료하세요.

  1. 원하는 편집기에서 virtio-driver.yaml과 같은 VirtualMachineDisk 매니페스트를 만듭니다.

    nano virtio-driver.yaml
    
  2. 다음 YAML 매니페스트를 복사하여 붙여넣습니다.

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineDisk
    metadata:
      name: virtio-driver
    spec:
      size: 1Gi
      source:
        registry:
          url: docker://quay.io/kubevirt/virtio-container-disk:latest
      diskType: cdrom
    

    이 매니페스트는 공개 Docker 저장소에서 최신 virtio 드라이버를 가져오고 diskTypecdrom으로 설정합니다. VM에서 설치 프로세스 중에 이 디스크가 사용됩니다.

  3. 편집기에서 매니페스트를 저장하고 닫습니다.

  4. kubectl을 사용하여 VirtualMachineDisk를 만듭니다.

    kubectl apply -f virtio-driver.yaml
    

Windows VM 만들기

Windows ISO VirtualMachineDisk에서 부팅되고 virtio 드라이버 디스크를 연결하는 VM을 만듭니다.

  1. 원하는 편집기에서 부팅 볼륨의 VirtualMachineDiskVirtualMachine(예: windows-vm.yaml)을 정의하는 매니페스트를 만듭니다.

    nano windows-vm.yaml
    
  2. 다음 YAML 매니페스트를 복사하여 붙여넣습니다.

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineDisk
    metadata:
      name: VM_NAME-boot-dv
    spec:
      size: 100Gi
    ---
    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachine
    metadata:
      name: VM_NAME
    spec:
      osType: Windows
      disks:
        - virtualMachineDiskName: VM_NAME-boot-dv
          boot: true
        - virtualMachineDiskName: windows-iso
        - virtualMachineDiskName: virtio-driver
      compute:
        cpu:
          vcpus: 2
        memory:
          capacity: 4Gi
      interfaces:
        - name: eth0
          networkName: pod-network
    

    VM_NAME을 VM에 사용하려는 이름으로 바꿉니다.

    이 매니페스트는 100GiB(기비바이트) 부팅 볼륨을 만듭니다. VM이 처음 시작될 때 이 부팅 볼륨이 비어 있으므로, VM이 ISO에서 CD-ROM 기기로 부팅되어 설정 루틴이 시작됩니다. 또한 설치 프로세스를 완료하기 위해 virtio 드라이버도 연결됩니다.

  3. 편집기에서 매니페스트를 저장하고 닫습니다.

  4. kubectl을 사용하여 VirtualMachineDiskVirtualMachine을 만듭니다.

    kubectl apply -f windows-vm.yaml
    

Windows VM에 연결 및 OS 설치 완료

이전 섹션의 Windows ISO에서 VM이 시작되고 부팅됩니다. VM에 연결하고 Windows 설치 프로세스를 완료하고 VM을 구성합니다.

  1. Windows VM에 연결합니다.

    kubectl virt vnc VM_NAME
    

    VM_NAME을 Windows VM 이름으로 바꿉니다.

    메시지가 표시되면 VM에 대한 Windows 게스트 OS 사용자 인증 정보를 입력합니다.

    kubectl virt vnc를 사용하여 VM에 연결하는 방법은 VNC를 사용하여 직접 연결을 참조하세요.

  2. Windows 설정에서 커스텀 설치 수행을 선택합니다.

  3. 로드 드라이버를 선택하고 virtio 디스크의 viostor 디렉터리를 찾은 후 원하는 Windows 버전과 일치하는 디렉터리를 선택합니다.

    자세한 내용은 KubeVirt Windows virtio 드라이버를 참조하세요.

  4. 이제 virtio의 스토리지 및 네트워크 드라이버를 사용할 수 있게 되면 나머지 Windows 설치 프로세스를 완료합니다.

    설치 후 VM에 직접 연결할 수 있도록 원격 데스크톱 프로토콜을 사용 설정하는 것이 좋습니다.

ISO 이미지 및 드라이버 디스크 분리

Windows 설치가 완료되면 virtio 드라이버 디스크를 삭제하고 VM에서 Windows ISO 이미지를 삭제합니다.

  1. Windows VM을 중지합니다.

    kubectl virt stop VM_NAME
    

    VM_NAME을 Windows VM 이름으로 바꿉니다.

  2. kubectl을 사용하여 VM을 수정합니다.

    kubectl edit gvm VM_NAME
    

    VM_NAME을 Windows VM 이름으로 바꿉니다.

  3. 편집기에서 다음 예시에 표시된 것처럼 Windows ISO 및 virtio 디스크를 삭제하도록 spec.disks 섹션을 업데이트합니다. VM에 연결된 남은 디스크는 VM_NAME-boot-dv입니다.

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachine
    metadata:
      name: windows-vm
    spec:
      osType: Windows
      disks:
        - virtualMachineDiskName: windows-vm-boot-dv
          boot: true
      interfaces:
    ...
    
  4. VM 매니페스트를 저장하고 닫습니다.

  5. Windows VM을 시작합니다.

    kubectl virt start VM_NAME
    

    VM_NAME을 Windows VM 이름으로 바꿉니다.

  6. VM의 STATUS를 확인합니다.

    kubectl get gvm VM_NAME
    

    VM_NAME을 Windows VM 이름으로 바꿉니다.

    VM이 Running 상태인지 확인합니다. VM이 Running 상태가 아니면 VirtualMachine 리소스 매니페스트에서 Windows ISO 및 virtio 디스크만 삭제되었는지 확인합니다. 호스트에서 컴퓨팅 리소스가 VM을 시작하기에 충분한지 확인합니다.

다음 단계