이 문서에서는 GDC용 VM 런타임을 사용하여 ISO에서 부팅하는 Windows 가상 머신(VM)을 만드는 방법을 보여줍니다. VM이 부팅되면 Windows 설정 루틴을 수동으로 완료합니다.
또한 HTTP 소스 또는 Cloud Storage를 사용하여 준비된 디스크 이미지로부터 Windows VM을 만들 수 있습니다.
시작하기 전에
이 문서를 완료하려면 다음 리소스에 대해 액세스 권한이 필요합니다.
- 베어메탈용 GKE 버전 1.12.0(
anthosBareMetalVersion: 1.12.0
) 이상 클러스터에 대한 액세스 권한. 워크로드 실행이 가능한 모든 클러스터 유형을 사용할 수 있습니다. 필요한 경우 Compute Engine에서 베어메탈용 GDCV를 사용해 보거나 클러스터 만들기 개요를 참조하세요. kubectl
의 플러그인으로 설치되는virtctl
클라이언트 도구. 필요한 경우 virtctl 클라이언트 도구를 설치합니다.
ISO 이미지의 가상 디스크 만들기
Windows VM을 성공적으로 만들기 위해서는 이 문서의 단계 및 섹션을 순서대로 수행하세요.
Windows ISO 이미지에서 부팅하려면 먼저 diskType
이 cdrom
인 VirtualMachineDisk
를 만듭니다. Windows ISO를 이 디스크의 소스로 사용합니다.
원하는 편집기에서
windows-iso.yaml
과 같은VirtualMachineDisk
매니페스트를 만듭니다.nano windows-iso.yaml
다음 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를 가져오도록 사용자 인증 정보를 만들고 사용할 수 있습니다.편집기에서 매니페스트를 저장하고 닫습니다.
kubectl
을 사용하여VirtualMachineDisk
를 만듭니다.kubectl apply -f windows-iso.yaml
VM 드라이버 디스크 만들기
Windows ISO로부터 성공적으로 부팅하고 설치 프로세스를 완료하려면 VM에 virtio
드라이버 액세스 권한이 필요합니다. VM에 virtio
드라이버를 제공하려면 다음 단계를 완료하세요.
원하는 편집기에서
virtio-driver.yaml
과 같은VirtualMachineDisk
매니페스트를 만듭니다.nano virtio-driver.yaml
다음 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
드라이버를 가져오고diskType
을cdrom
으로 설정합니다. VM에서 설치 프로세스 중에 이 디스크가 사용됩니다.편집기에서 매니페스트를 저장하고 닫습니다.
kubectl
을 사용하여VirtualMachineDisk
를 만듭니다.kubectl apply -f virtio-driver.yaml
Windows VM 만들기
Windows ISO VirtualMachineDisk
에서 부팅되고 virtio
드라이버 디스크를 연결하는 VM을 만듭니다.
원하는 편집기에서 부팅 볼륨의
VirtualMachineDisk
와VirtualMachine
(예:windows-vm.yaml
)을 정의하는 매니페스트를 만듭니다.nano windows-vm.yaml
다음 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
드라이버도 연결됩니다.편집기에서 매니페스트를 저장하고 닫습니다.
kubectl
을 사용하여VirtualMachineDisk
및VirtualMachine
을 만듭니다.kubectl apply -f windows-vm.yaml
Windows VM에 연결 및 OS 설치 완료
이전 섹션의 Windows ISO에서 VM이 시작되고 부팅됩니다. VM에 연결하고 Windows 설치 프로세스를 완료하고 VM을 구성합니다.
Windows VM에 연결합니다.
kubectl virt vnc VM_NAME
VM_NAME
을 Windows VM 이름으로 바꿉니다.메시지가 표시되면 VM에 대한 Windows 게스트 OS 사용자 인증 정보를 입력합니다.
kubectl virt vnc
를 사용하여 VM에 연결하는 방법은 VNC를 사용하여 직접 연결을 참조하세요.Windows 설정에서 커스텀 설치 수행을 선택합니다.
로드 드라이버를 선택하고
virtio
디스크의 viostor 디렉터리를 찾은 후 원하는 Windows 버전과 일치하는 디렉터리를 선택합니다.자세한 내용은 KubeVirt Windows
virtio
드라이버를 참조하세요.이제
virtio
의 스토리지 및 네트워크 드라이버를 사용할 수 있게 되면 나머지 Windows 설치 프로세스를 완료합니다.설치 후 VM에 직접 연결할 수 있도록 원격 데스크톱 프로토콜을 사용 설정하는 것이 좋습니다.
ISO 이미지 및 드라이버 디스크 분리
Windows 설치가 완료되면 virtio
드라이버 디스크를 삭제하고 VM에서 Windows ISO 이미지를 삭제합니다.
Windows VM을 중지합니다.
kubectl virt stop VM_NAME
VM_NAME
을 Windows VM 이름으로 바꿉니다.kubectl
을 사용하여 VM을 수정합니다.kubectl edit gvm VM_NAME
VM_NAME
을 Windows VM 이름으로 바꿉니다.편집기에서 다음 예시에 표시된 것처럼 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: ...
VM 매니페스트를 저장하고 닫습니다.
Windows VM을 시작합니다.
kubectl virt start VM_NAME
VM_NAME
을 Windows VM 이름으로 바꿉니다.VM의
STATUS
를 확인합니다.kubectl get gvm VM_NAME
VM_NAME
을 Windows VM 이름으로 바꿉니다.VM이
Running
상태인지 확인합니다. VM이Running
상태가 아니면VirtualMachine
리소스 매니페스트에서 Windows ISO 및virtio
디스크만 삭제되었는지 확인합니다. 호스트에서 컴퓨팅 리소스가 VM을 시작하기에 충분한지 확인합니다.