베어메탈용 Anthos 클러스터에 있는 ISO 이미지에서 Windows VM 만들기

이 문서에서는 Anthos 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
    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 설치 완료

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

  1. Windows VM에 연결합니다.

    kubectl virt vnc VM_NAME
    

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

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

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

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

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

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

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

Windows 설치가 완료되면 VM에서 virtio 드라이버 디스크 및 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. 다음 예시와 같이 편집기에서 spec.disks 섹션을 업데이트하여 Windows ISO 및 virtio 디스크를 삭제합니다. 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을 시작하기에 충분한 컴퓨팅 리소스가 있는지 확인합니다.

다음 단계