Panduan memulai: Membuat VM di cluster Google Distributed Cloud
Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
Panduan memulai ini menunjukkan cara menggunakan Runtime VM di GDC untuk membuat VM (virtual machine) di Google Distributed Cloud. Runtime VM di GDC menggunakan
KubeVirt
untuk mengatur VM di cluster, dan memungkinkan Anda menggunakan aplikasi dan
workload berbasis VM di lingkungan pengembangan yang seragam.
Sebelum memulai
Untuk menyelesaikan panduan memulai ini, Anda memerlukan akses ke cluster Google Distributed Cloud versi
1.12 (anthosBareMetalVersion: 1.12) atau yang lebih tinggi. Anda dapat menggunakan jenis cluster apa pun yang mampu menjalankan workload. Jika diperlukan,
coba Google Distributed Cloud di Compute Engine
atau lihat
ringkasan pembuatan cluster.
Mengaktifkan Runtime VM di GDC
Runtime VM di GDC otomatis diinstal di Google Distributed Cloud
versi 1.10 atau yang lebih baru, tetapi dinonaktifkan secara default. Sebelum dapat menjalankan resource VM di Google Distributed Cloud, Anda harus mengaktifkan Runtime VM di GDC.
bmctl
Google Distributed Cloud versi 1.11 atau yang lebih tinggi dapat menggunakan alat command line bmctl:
Untuk mengaktifkan runtime, gunakan alat bmctl:
bmctlenablevmruntime--kubeconfigKUBECONFIG_PATH
Berikan jalur ke file kubeconfig untuk cluster Anda.
Google Distributed Cloud membuat file kubeconfig di workstation admin saat Anda membuat cluster. Secara default, jalurnya adalah
bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig.
Jika Runtime VM di GDC sudah diaktifkan, perintah akan menampilkan error.
Resource kustom
Google Distributed Cloud versi 1.10 atau yang lebih tinggi dapat menggunakan definisi resource kustom
untuk mengaktifkan Runtime VM di GDC. Resource kustom ini diinstal secara
default.
Edit resource kustom VMRuntime:
kubectleditvmruntime
Tetapkan enabled:true dalam spesifikasi:
apiVersion:vm.cluster.gke.io/v1kind:VMRuntimemetadata:name:vmruntimespec:enabled:true# useEmulation defaults to "false" if not set.useEmulation:true# vmImageFormat defaults to "qcow2" if not set.vmImageFormat:qcow2
Di bagian spec sebelumnya, nilai berikut dapat ditetapkan:
enabled: ditetapkan ke true untuk mengaktifkan Runtime VM di GDC
useEmulation: Jika node Anda tidak mendukung virtualisasi hardware, atau
Anda tidak yakin, tetapkan nilai ke benar. Jika tersedia, virtualisasi
hardware memberikan performa yang lebih baik daripada emulasi software. Kolom
useEmulation ditetapkan secara default ke false, jika tidak ditentukan.
vmImageFormat: Mendukung dua nilai format image disk: raw dan
qcow2. Jika Anda tidak menetapkan vmImageFormat, Runtime VM di GDC akan menggunakan format image disk raw untuk membuat VM. Format raw dapat memberikan performa yang lebih baik dibandingkan qcow2, format copy on write, tetapi dapat menggunakan lebih banyak disk. Untuk informasi selengkapnya tentang
format image untuk VM Anda, lihat
Format file image disk
dalam dokumentasi QEMU.
Simpan resource kustom di editor Anda.
Pastikan resource kustom VMRuntime diaktifkan:
kubectldescribevmruntimevmruntime
Detail resource kustom VMRuntime mencakup bagian Status.
Runtime VM di GDC diaktifkan dan berfungsi saat
VMRuntime.Status.Ready ditampilkan sebagai true.
Kredensial memungkinkan Anda mengautentikasi dan mendownload alat klien virtctl,
lalu menginstal ke /usr/bin/kubectl-virt di komputer lokal.
Pastikan plugin virtctl telah diinstal:
kubectlpluginlist
Jika kubectl-virt tercantum dalam respons, plugin berhasil
diinstal.
Jika kubectl-virt tidak tercantum, periksa file install-virtctl.log seperti yang tercantum
dalam output perintah bmctl install sebelumnya, seperti
bmctl-workspace/log/install-virtctl-[date]/install-virtctl.log.
Membuat VM
Dalam panduan memulai ini, Anda akan menggunakan CLI kubectl untuk membuat VM yang menggunakan image VM publik dan kredensial default.
Buat VM di cluster Anda. Plugin virtctl digunakan dengan perintah kubectl:
Perintah ini membuat VM Ubuntu 20.04 dan setelan default 2 CPU, memori 4Gi, dan disk booting 20Gi dalam mode ReadWriteOnce menggunakan class penyimpanan local-shared. Ganti nilai berikut:
VM_NAME: nama untuk VM Anda. Nama VM
hanya boleh berisi karakter alfanumerik huruf kecil atau '-', diawali dan diakhiri
dengan karakter alfanumerik, dan berisi maksimal 63 karakter. Untuk
informasi selengkapnya, lihat
Nama Label RFC 1123
dalam dokumentasi Kubernetes.
USERNAME: nama pengguna untuk akun yang akan dibuat di VM.
PASSWORD: sandi untuk akun pengguna.
Jika Anda menerima error tentang parameter CLI, pastikan cluster Anda menggunakan
versi 1.11.1 atau yang lebih tinggi dan Anda memiliki alat klien virtctl
versi terbaru. Untuk mengetahui informasi selengkapnya tentang error CLI, lihat log konsol. Untuk aturan nama pengguna dan sandi, lihat dokumentasi untuk
sistem operasi (OS) tamu. Jika ada yang tidak berfungsi seperti yang diharapkan, periksa
masalah umum Runtime VM di GDC.
Diperlukan waktu beberapa menit untuk membuat VM. Periksa status VM dengan perintah kubectl:
kubectlgetgvm
Contoh output berikut menunjukkan VM dalam status Running:
NAME STATUS AGE IP
vm-sample1 Running 64s 192.168.2.124
Menghubungkan ke VM Anda
Saat VM berjalan, hubungkan ke konsol VM.
Untuk mengakses VM dari konsol, gunakan kubectl:
kubectlvirtconsoleVM_NAME
Saat diminta, masukkan kredensial pengguna yang Anda tentukan untuk membuat VM.
Setelah berhasil terhubung ke konsol VM, keluar dari sesi VM dan konsol:
Ctrl+]
Pembersihan
Untuk membersihkan resource yang dibuat dalam panduan memulai ini, ikuti langkah-langkah berikut.
Untuk menghapus VM dan DataVolume terkait, gunakan kubectl:
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Sulit dipahami","hardToUnderstand","thumb-down"],["Informasi atau kode contoh salah","incorrectInformationOrSampleCode","thumb-down"],["Informasi/contoh yang saya butuhkan tidak ada","missingTheInformationSamplesINeed","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 2025-09-04 UTC."],[],[],null,["This quickstart shows you how to use VM Runtime on GDC to create a\nvirtual machine (VM) on Google Distributed Cloud. VM Runtime on GDC uses\n[KubeVirt](https://kubevirt.io/)\nto orchestrate VMs on clusters, and lets you work with your VM-based apps and\nworkloads in a uniform development environment.\n\nBefore you begin\n\nTo complete this quickstart, you need access to Google Distributed Cloud version\n1.12 (`anthosBareMetalVersion: 1.12`) or higher cluster. You can use any\ncluster type capable of running workloads. If needed,\n[try Google Distributed Cloud on Compute Engine](/kubernetes-engine/distributed-cloud/bare-metal/docs/try/gce-vms)\nor see the\n[cluster creation overview](/kubernetes-engine/distributed-cloud/bare-metal/docs/installing/creating-clusters/create-clusters-overview).\n\nEnable VM Runtime on GDC\n\nVM Runtime on GDC is automatically installed in Google Distributed Cloud\nversion 1.10 or higher, but is disabled by default. Before you can run VM\nresources in your Google Distributed Cloud, you must enable the\nVM Runtime on GDC. \n\nbmctl\n\nGoogle Distributed Cloud version 1.11 or higher can use the `bmctl` command-line tool:\n\n- To enable the runtime, use the `bmctl` tool:\n\n bmctl enable vmruntime --kubeconfig \u003cvar label=\"Kubeconfig path\" translate=\"no\"\u003eKUBECONFIG_PATH\u003c/var\u003e\n\n Provide the path to the kubeconfig file for your cluster.\n Google Distributed Cloud generates the kubeconfig file on the admin\n workstation when you create a cluster. By default, the path is\n `bmctl-workspace/`\u003cvar translate=\"no\"\u003eCLUSTER_NAME\u003c/var\u003e`/`\u003cvar translate=\"no\"\u003eCLUSTER_NAME\u003c/var\u003e`-kubeconfig`.\n\n If VM Runtime on GDC is already enabled, the command returns an\n error.\n\nCustom resource\n\nGoogle Distributed Cloud version 1.10 or higher can use a custom resource definition\nto enable VM Runtime on GDC. This custom resource is installed by\ndefault.\n\n1. Edit the `VMRuntime` custom resource:\n\n kubectl edit vmruntime\n\n2. Set `enabled:true` in the spec:\n\n apiVersion: vm.cluster.gke.io/v1\n kind: VMRuntime\n metadata:\n name: vmruntime\n spec:\n enabled: true\n # useEmulation defaults to \"false\" if not set.\n useEmulation: true\n # vmImageFormat defaults to \"qcow2\" if not set.\n vmImageFormat: qcow2\n\n In the preceding `spec` section, the following values can be set:\n - `enabled`: set to true to enable VM Runtime on GDC\n - `useEmulation`: If your node doesn't support hardware virtualization, or you aren't sure, set the value to true. If available, hardware virtualization provides better performance than software emulation. The `useEmulation` field defaults to `false`, if it isn't specified.\n - `vmImageFormat`: Supports two disk image format values: `raw` and `qcow2`. If you don't set `vmImageFormat`, the VM Runtime on GDC uses the `raw` disk image format to create VMs. The `raw` format may provide improved performance over `qcow2`, a copy on write format, but may use more disk. For more information about the image formats for your VM, see [Disk image file formats](https://www.qemu.org/docs/master/system/images.html#disk-image-file-formats) in the QEMU documentation.\n3. Save the custom resource in your editor.\n\n4. Verify that the `VMRuntime` custom resource is enabled:\n\n kubectl describe vmruntime vmruntime\n\n The details of the `VMRuntime` custom resource include a `Status` section.\n VM Runtime on GDC is enabled and working when\n `VMRuntime.Status.Ready` shows as `true`.\n\nInstall the `virtctl` client tool\n\nTo create and manage VMs, install the\n[virtctl client tool](https://kubevirt.io/user-guide/operations/virtctl_client_tool/).\n\n1. Install the `virtctl` client tool as a `kubectl` plugin:\n\n export GOOGLE_APPLICATION_CREDENTIALS=\"\u003cvar label=\"name\" translate=\"no\"\u003ePATH_TO_SERVICE_ACCOUNT_KEY\u003c/var\u003e/bm-gcr.json\"\n sudo -E bmctl install virtctl\n\n The credentials let you authenticate and download the `virtctl` client tool,\n then install to `/usr/bin/kubectl-virt` on your local machine.\n2. Verify that the `virtctl` plugin is installed:\n\n kubectl plugin list\n\n If `kubectl-virt` is listed in the response, the plugin is successfully\n installed.\n\n If `kubectl-virt` is not listed, check the `install-virtctl.log` file as noted\n in the output of the previous `bmctl install` command, such as\n `bmctl-workspace/log/install-virtctl-[date]/install-virtctl.log`.\n\nCreate a VM\n\nIn this quickstart, you use the `kubectl` CLI to create a VM that uses a public\nVM image and default credentials.\n| **Note:** For instructions on creating a VM from a `VirtualMachine` YAML manifest file, see [Tutorial: Create and manage a Linux VM in VM Runtime on GDC](/kubernetes-engine/distributed-cloud/bare-metal/docs/vm-runtime/tutorial-create-vm).\n\n1. Create a VM in your cluster. The `virtctl` plugin is used with the\n `kubectl` command:\n\n kubectl virt create vm \u003cvar label=\"name\" translate=\"no\"\u003eVM_NAME\u003c/var\u003e \\\n --image ubuntu20.04 \\\n --configure-initial-password \u003cvar label=\"username\" translate=\"no\"\u003eUSERNAME\u003c/var\u003e:\u003cvar label=\"name\" translate=\"no\"\u003ePASSWORD\u003c/var\u003e\n\n This command creates an *Ubuntu 20.04* VM and defaults of *2* CPU, *4Gi*\n memory, and a *20Gi* boot disk in *ReadWriteOnce* mode using the\n *local-shared* storage class. Replace the following values:\n - \u003cvar scope=\"VM_NAME\" translate=\"no\"\u003eVM_NAME\u003c/var\u003e: name for your VM. VM names must contain only lowercase alphanumeric characters or '-', start and end with an alphanumeric character, and contain at most 63 characters. For more information, see [RFC 1123 Label Names](https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#dns-label-names) in the Kubernetes documentation.\n - \u003cvar translate=\"no\"\u003eUSERNAME\u003c/var\u003e: user name for the account to create on the VM.\n - \u003cvar translate=\"no\"\u003ePASSWORD\u003c/var\u003e: password for the user account.\n\n If you receive an error about CLI parameters, verify that your cluster is at\n version `1.11.1` or higher and that you have the latest version of the\n `virtctl` client tool. For more information about CLI errors, consult the\n console log. For username and password rules, see the documentation for the\n guest operating system (OS). If something isn't working as expected, check for\n [VM Runtime on GDC known issues](/kubernetes-engine/distributed-cloud/bare-metal/docs/troubleshooting/known-issues).\n | **Note:** The preceding command creates a YAML file, such as `vm-sample1.yaml`, in the `~/google-virtctl` directory. You can view the content of this file to see the definition of the Kubernetes resources that were created by VM Runtime on GDC.\n2. It can take a few minutes to create the VM. Check the status of the VM with\n the `kubectl` command:\n\n kubectl get gvm\n\n The following example output shows the VM in a `Running` state: \n\n NAME STATUS AGE IP\n vm-sample1 Running 64s 192.168.2.124\n\nConnect to your VM\n\nWhen your VM is running, connect to the console of the VM.\n\n1. To access a VM from the console, use `kubectl`:\n\n kubectl virt console \u003cvar scope=\"VM_NAME\" translate=\"no\"\u003eVM_NAME\u003c/var\u003e\n\n2. When prompted, enter the user credentials you specified to create the VM.\n\n3. After you have successfully connected to the console of the VM, exit the VM\n session and console:\n\n Ctrl + ]\n\nClean up\n\nTo clean up the resources created in this quickstart, follow these steps.\n\n1. To delete the VM and associated DataVolume, use `kubectl`:\n\n kubectl virt delete vm \u003cvar scope=\"VM_NAME\" translate=\"no\"\u003eVM_NAME\u003c/var\u003e --all\n\nWhat's next\n\n- [Manage the power state of a VM in Google Distributed Cloud](/kubernetes-engine/distributed-cloud/bare-metal/docs/vm-runtime/manage-power-state).\n- [Edit a VM in Google Distributed Cloud](/kubernetes-engine/distributed-cloud/bare-metal/docs/vm-runtime/edit-vm).\n- [View VM console logs in Google Distributed Cloud](/kubernetes-engine/distributed-cloud/bare-metal/docs/vm-runtime/view-console-logs)."]]