이 빠른 시작에서는 Google Distributed Cloud의 VM 런타임을 사용하여 베어메탈용 GKE에서 가상 머신(VM)을 만드는 방법을 설명합니다. Google Distributed Cloud의 VM 런타임은 KubeVirt를 사용하여 클러스터의 VM을 조정하고 동일한 개발 환경에서 VM 기반 앱 및 워크로드를 사용할 수 있게 해줍니다.
시작하기 전에
이 빠른 시작을 완료하려면 베어메탈용 GKE 버전 1.12(anthosBareMetalVersion: 1.12
) 이상에 액세스할 수 있어야 합니다. 워크로드 실행이 가능한 모든 클러스터 유형을 사용할 수 있습니다. 필요한 경우 Compute Engine에서 베어메탈용 GKE를 사용해 보거나 클러스터 만들기 개요를 참조하세요.
Google Distributed Cloud에서 VM 런타임 사용 설정
Google Distributed Cloud의 VM 런타임은 베어메탈용 GKE 버전 1.10 이상에 자동으로 설치되지만 기본적으로 사용 중지되어 있습니다. 베어메탈용 GKE에서 VM 리소스를 실행하려면 먼저 Google Distributed Cloud의 VM 런타임을 사용 설정해야 합니다.
bmctl
베어메탈용 GKE 버전 1.11 이상은 bmctl
명령줄 도구를 사용할 수 있습니다.
런타임을 사용 설정하려면
bmctl
도구를 사용합니다.bmctl enable vmruntime --kubeconfig KUBECONFIG_PATH
클러스터의 kubeconfig 파일 경로를 제공합니다. 클러스터를 만들면 베어메탈용 GKE가 관리자 워크스테이션에 kubeconfig 파일을 생성합니다. 기본적으로 경로는
bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig
입니다.Google Distributed Cloud의 VM 런타임이 이미 사용 설정되어 있으면 명령어가 오류를 반환합니다.
커스텀 리소스
베어메탈용 GKE 버전 1.10 이상은 커스텀 리소스 정의를 사용하여 Google Distributed Cloud에서 VM 런타임을 사용 설정할 수 있습니다. 이 커스텀 리소스는 기본적으로 설치되어 있습니다.
VMRuntime
커스텀 리소스를 수정합니다.kubectl edit vmruntime
사양에서
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
: Google Distributed Cloud의 VM 런타임을 사용 설정하려면 true로 설정합니다.useEmulation
: 노드가 하드웨어 가상화를 지원하지 않거나 확실하지 않으면 값을 true로 설정합니다. 사용 가능한 경우 하드웨어 가상화에서 소프트웨어 에뮬레이션보다 우수한 성능을 제공합니다.useEmulation
필드가 지정되지 않으면 기본값은false
입니다.vmImageFormat
: 두 가지 디스크 이미지 형식 값인raw
및qcow2
를 지원합니다.vmImageFormat
을 설정하지 않으면 Google Distributed Cloud의 VM 런타임에서raw
디스크 이미지 형식을 사용하여 VM을 만듭니다.raw
형식은 쓰기 형식의 사본인qcow2
보다 우수한 성능을 제공할 수 있지만 더 많은 디스크를 사용할 수 있습니다. VM의 이미지 형식에 대한 자세한 내용은 QEMU 문서의 디스크 이미지 파일 형식을 참조하세요.
편집기에서 커스텀 리소스를 저장합니다.
VMRuntime
커스텀 리소스가 사용 설정되었는지 확인합니다.kubectl describe vmruntime vmruntime
VMRuntime
커스텀 리소스의 세부정보에는Status
섹션이 포함됩니다.VMRuntime.Status.Ready
가true
로 표시되면 Google Distributed Cloud의 VM 런타임이 사용 설정되어 작동하는 것입니다.
virtctl
클라이언트 도구 설치
VM을 만들고 관리하려면 virtctl 클라이언트 도구를 설치합니다.
virtctl
클라이언트 도구를kubectl
플러그인으로 설치합니다.export GOOGLE_APPLICATION_CREDENTIALS="PATH_TO_SERVICE_ACCOUNT_KEY/bm-gcr.json" sudo -E bmctl install virtctl
사용자 인증 정보를 사용해서 인증을 수행하고
virtctl
클라이언트 도구를 다운로드한 후/usr/bin/kubectl-virt
를 로컬 머신에 설치할 수 있습니다.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을 만듭니다.
클러스터에 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) 문서를 참조하세요. 예상대로 작동하지 않는 경우 Google Distributed Cloud의 VM 런타임 알려진 문제를 확인하세요.VM을 만드는 데 몇 분 정도 걸릴 수 있습니다.
kubectl
명령어로 VM 상태를 확인합니다.kubectl get gvm
다음 출력 예시는
Running
상태의 VM을 보여줍니다.NAME STATUS AGE IP vm-sample1 Running 64s 192.168.2.124
VM에 연결
VM이 실행 중이면 VM의 콘솔에 연결합니다.
콘솔에서 VM에 액세스하려면
kubectl
을 사용합니다.kubectl virt console VM_NAME
메시지가 표시되면 지정된 사용자 인증 정보를 입력하여 VM을 만듭니다.
VM의 콘솔에 성공적으로 연결된 후 VM 세션 및 콘솔을 종료합니다.
Ctrl + ]
삭제
이 빠른 시작에서 만든 리소스를 삭제하려면 다음 단계를 따르세요.
VM 및 연결된 DataVolume을 삭제하려면
kubectl
을 사용합니다.kubectl virt delete vm VM_NAME --all