Dokumen ini ditujukan untuk pemilik aplikasi yang menjalankan Google Distributed Cloud. Dokumen ini menunjukkan cara membuat dan mengelola resource disk untuk virtual machine (VM) yang menggunakan VM Runtime di GDC.
Sebelum memulai
Untuk menyelesaikan dokumen ini, Anda memerlukan akses ke resource berikut:
- Akses ke cluster Google Distributed Cloud versi 1.12.0 (
anthosBareMetalVersion: 1.12.0
) atau yang lebih tinggi. Anda dapat menggunakan jenis cluster apa pun yang dapat menjalankan workload. Jika diperlukan, coba Google Distributed Cloud di Compute Engine atau lihat ringkasan pembuatan cluster. - Alat klien
virtctl
diinstal sebagai plugin untukkubectl
. Jika perlu, instal alat klien virtctl.
Membuat VM dengan disk terpasang
Saat membuat VM, Anda dapat memasang boot disk atau disk data yang ada, membuat disk dari image (termasuk untuk boot disk), atau membuat disk kosong.
Blank disk
Dalam skenario ini, Anda membuat disk kosong dan melampirkannya ke VM. Skenario ini memungkinkan Anda membuat disk data untuk menyimpan data aplikasi.
Buat manifes yang menentukan
VirtualMachineDisk
danVirtualMachine
, sepertimy-vm.yaml
, di editor pilihan Anda:nano my-vm.yaml
Salin dan tempel definisi YAML berikut:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: DISK_NAME spec: size: 10Gi --- apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: VM_NAME spec: interfaces: - name: eth0 networkName: pod-network default: true disks: - boot: true virtualMachineDiskName: VM_NAME-boot-dv - virtualMachineDiskName: DISK_NAME
Ganti kode berikut:
DISK_NAME
: nama disk kosong yang Anda buat dan pasang ke VM.VM_NAME
: nama VM yang Anda buat.Contoh ini membuat disk
10Gi
(10 gibibyte) kosong bernamaDISK_NAME
. Di bagianspec.disks
VM, Anda juga harus melampirkan boot disk, seperti dari image seperti yang ditunjukkan di bagian berikutnya.
Simpan dan tutup file manifes di editor Anda.
Buat VM dan disk menggunakan
kubectl
:kubectl apply -f my-vm.yaml --kubeconfig KUBECONFIG
Ganti
KUBECONFIG
dengan jalur ke file kubeconfig cluster.
Dari gambar
Dalam skenario ini, Anda membuat disk dari image dan melampirkannya ke VM. Skenario ini memungkinkan Anda membuat boot disk, misalnya, dari image. Anda juga dapat membuat dan melampirkan disk data dari image.
Sumber gambar yang didukung
Runtime VM di GDC memungkinkan berbagai format image
dan mendukung tiga jenis sumber image yang dapat ditentukan dalam
spesifikasi VirtualMachineDisk
. Setiap contoh berikut membuat disk
20 gibibyte dari sumber image yang didukung berbeda.
Hypertext Transfer Protocol (HTTP)
Contoh
VirtualMachineDisk
berikut menunjukkan struktur dasar untuk sumber gambar HTTP. Kolomurl
mengharapkan URL HTTP atau HTTPS.apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: my-disk spec: source: http: url: https://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img size: 20GiB storageClassName: local-shared
Cloud Storage
Contoh berikut menunjukkan cara membuat disk dari image di bucket Cloud Storage. Jika kredensial default aplikasi di mesin tidak cukup untuk mengakses URL Cloud Storage, Anda harus memberikan kredensial. Dalam contoh berikut,
my-gcs
adalah rahasia yang berisi kunci akun layanan berenkode base64.apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: my-disk spec: source: gcs: url: gs://kubevirt-ci-vm-images/rhel8.2/rhel8_2_cloud.qcow2 secretRef: my-gcs size: 20GiB storageClassName: local-shared
Jika Anda menggunakan kunci akun layanan yang didownload untuk membuat cluster, Anda dapat menggunakan kunci akun layanan Artifact Registry untuk akses Cloud Storage. Jika Anda membuat akun layanan terpisah untuk mengakses Cloud Storage, lihat Mengonfigurasi akun layanan yang dapat mengakses bucket Cloud Storage.
Gunakan perintah berikut untuk membuat Secret Kubernetes dari file kunci akun layanan yang didownload:
kubectl create secret generic SECRET_NAME --from-file=KEY_FILE --namespace default \ --kubeconfig KUBECONFIG
Ganti kode berikut:
SECRET_NAME
: nama untuk Secret Anda.KEY_FILE
: jalur ke file JSON kunci akun layanan yang didownload. Contoh,bmctl-workspace/.sa-keys/my-project-anthos-baremetal-gcr.json
.KUBECONFIG
: jalur ke file kubeconfig cluster.
Untuk mengetahui informasi selengkapnya tentang cara menggunakan kredensial untuk mengakses Cloud Storage, lihat Membuat dan menggunakan kredensial untuk mengimpor gambar dari Cloud Storage.
Contoh container registry
Registri container yang mematuhi distribution-spec Open Container Initiative (OCI) didukung. Contoh berikut membuat disk dari image yang disimpan di Docker registry.
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: my-disk spec: source: registry: url: docker://kubevirt/fedora-cloud-registry-disk-demo size: 20GiB storageClassName: local-shared
Format gambar yang valid
Anda dapat menggunakan salah satu format gambar berikut saat membuat disk dari image:
- Arsip GNU zip (gzip) (
.gz
) - RAW (
.raw
,.img
) - Image disk QEMU copy on write versi 2 (qcow2) (
.qcow2
) - Arsip terkompresi XZ (
.xz
) - File disk Mesin Virtual (VMDK) (
.vmdk
) - File Virtual Disk Image (VDI) VirtualBox (
.vdi
) - File image Virtual Hard Disk (VHD) (
.vdh
) - File Disk Hard Virtual versi 2 (VDHX) (
.vdhx
) - File image disk ISO (
.iso
)
Contoh disk yang dibuat dari image HTTP
Langkah-langkah berikut membuat boot disk dari image Ubuntu:
Buat manifes yang menentukan
VirtualMachineDisk
danVirtualMachine
, seperti my-vm.yaml, di editor pilihan Anda:nano my-vm.yaml
Salin dan tempel definisi YAML berikut:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: VM_NAME-boot-dv spec: size: 20Gi source: http: url: https://cloud-images.ubuntu.com/releases/focal/release/ubuntu-20.04-server-cloudimg-amd64.img --- apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: VM_NAME spec: interfaces: - name: eth0 networkName: pod-network default: true disks: - boot: true virtualMachineDiskName: VM_NAME-boot-dv
Contoh ini membuat disk
20Gi
(20 gibibyte) bernamaVM_NAME-boot-dv
menggunakan image Ubuntu publik. Di bagianspec.disks
VM, disk disetel keboot: true
.Simpan dan tutup manifes di editor Anda.
Buat VM dan disk menggunakan
kubectl
:kubectl apply -f my-vm.yaml --kubeconfig KUBECONFIG
Ganti
KUBECONFIG
dengan jalur ke file kubeconfig cluster.
Disk yang ada
Dalam skenario ini, Anda membuat disk kosong dan melampirkannya ke VM. Skenario ini memungkinkan Anda membuat disk data untuk menyimpan data aplikasi.
Buat manifes
VirtualMachine
, seperti my-vm.yaml, di editor pilihan Anda:nano my-vm.yaml
Salin dan tempel definisi YAML berikut:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: VM_NAME spec: interfaces: - name: eth0 networkName: pod-network default: true disks: - boot: true virtualMachineDiskName: VM_NAME-boot-dv - virtualMachineDiskName: EXISTING_DISK_NAME
Contoh ini melampirkan disk yang ada bernama
EXISTING_DISK_NAME
.Di bagian
spec.disks
VM, Anda juga harus melampirkan boot disk, seperti dari image seperti yang ditunjukkan di bagian sebelumnya.Simpan dan tutup manifes VM di editor Anda.
Buat VM menggunakan
kubectl
:kubectl apply -f my-vm.yaml --kubeconfig KUBECONFIG
Ganti
KUBECONFIG
dengan jalur ke file kubeconfig cluster.
Menemukan lokasi disk
Mulai dari Google Distributed Cloud versi 1.13.0, saat Anda membuat VM, VM Runtime di GDC menggunakan nama disk yang Anda tentukan di resource VM untuk menetapkan nomor seri disk. Secara khusus, nama yang Anda tentukan dengan
spec.disks.virtualMachineDiskName
di resource kustom VirtualMachine
digunakan dalam nomor seri untuk disk. Fitur ini memudahkan Anda menemukan disk di VM saat perlu melakukan operasi disk, seperti memformat atau memasang.
Misalnya, jika Anda membuat VM dan menentukan boot disk bernama sample-boot-dv
, resource kustom VirtualMachine
Anda akan terlihat seperti ini:
apiVersion: vm.cluster.gke.io/v1
kind: VirtualMachine
metadata:
name: sample-vm
spec:
osType: Linux
compute:
cpu:
vcpus: 2
memory:
capacity: 4Gi
interfaces:
- name: eth0
networkName: pod-network
default: true
disks:
- boot: true
virtualMachineDiskName: sample-vm-boot-dv
- virtualMachineDiskName: attached-disk
Untuk VM Linux, saat Anda login ke VM, Anda dapat menjalankan perintah berikut untuk mencantumkan disk berdasarkan nomor serinya:
ls -l /dev/disk/by-id/
Respons Anda akan terlihat seperti contoh output ini, dengan nama disk muncul sebagai nomor seri:
total 0
lrwxrwxrwx 1 root root 9 Oct 19 17:17 ata-QEMU_HARDDISK_agentInstallation -> ../../sdb
lrwxrwxrwx 1 root root 9 Oct 19 17:17 ata-QEMU_HARDDISK_agentSADisk -> ../../sda
lrwxrwxrwx 1 root root 9 Oct 19 17:17 virtio-sample-boot-dv -> ../../vda
lrwxrwxrwx 1 root root 10 Oct 19 17:17 virtio-sample-boot-dv-part1 -> ../../vda1
lrwxrwxrwx 1 root root 11 Oct 19 17:17 virtio-sample-boot-dv-part14 -> ../../vda14
lrwxrwxrwx 1 root root 11 Oct 19 17:17 virtio-sample-boot-dv-part15 -> ../../vda15
lrwxrwxrwx 1 root root 11 Oct 19 17:17 virtio-attached-disk -> ../../vdb
Perhatikan perilaku fitur situasional berikut:
- Jika nilai
virtualMachineDiskName
lebih panjang dari 20 karakter, VM Runtime di GDC hanya menggunakan 20 karakter pertama sebagai nomor seri. - Jika ada dua disk dengan 20 karakter pertama yang sama, hanya disk pertama yang akan memiliki nomor seri.
Membuat dan melampirkan disk ke VM yang ada
Jika memiliki VM yang sudah ada, Anda dapat membuat dan melampirkan disk untuk mendukung siklus proses aplikasi Anda. VM harus dalam status dihentikan sebelum Anda memasang disk.
Blank disk
Dalam skenario ini, Anda membuat disk kosong dan melampirkannya ke VM. Skenario ini memungkinkan Anda membuat disk data untuk menyimpan data aplikasi.
Gunakan
kubectl
untuk menghentikan VM, jika diperlukan:kubectl virt stop vm VM_NAME --kubeconfig KUBECONFIG
Ganti kode berikut:
VM_NAME
: nama VM yang ingin Anda hentikan.KUBECONFIG
: jalur ke file kubeconfig cluster.
Edit resource VM yang ada, seperti
my-vm
:kubectl edit gvm VM_NAME --kubeconfig KUBECONFIG
Perbarui manifes YAML
VirtualMachine
untuk menambahkan bagianVirtualMachineDisk
di bagian atas, lalu pasang disk di bagian akhirspec.disks
VM:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: DISK_NAME spec: size: 10Gi --- apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: VM_NAME spec: interfaces: - name: eth0 networkName: pod-network default: true disks: - boot: true virtualMachineDiskName: VM_NAME-boot-dv - virtualMachineDiskName: DISK_NAME
Contoh ini membuat disk
10Gi
(10 gibibyte) kosong bernamaDISK_NAME
.Simpan dan tutup manifes VM yang telah diupdate di editor Anda.
Gunakan
kubectl
untuk memulai VM:kubectl virt start vm VM_NAME --kubeconfig KUBECONFIG
Dari gambar
Dalam skenario ini, Anda membuat disk dari image sumber dan melampirkannya ke VM.
Gunakan
kubectl
untuk menghentikan VM, jika diperlukan:kubectl virt stop vm VM_NAME --kubeconfig KUBECONFIG
Ganti kode berikut:
VM_NAME
: nama VM yang ingin Anda hentikan.KUBECONFIG
: jalur ke file kubeconfig cluster.
Edit resource VM yang ada, seperti
my-vm
:kubectl edit gvm VM_NAME --kubeconfig KUBECONFIG
Perbarui manifes
VirtualMachine
untuk menambahkan bagianVirtualMachineDisk
di bagian atas, lalu pasang disk di bagian akhirspec.disks
VM:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: DISK_NAME spec: size: 10Gi source: http: url: http://example.com/my-disk-img.qcow2 --- apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: VM_NAME spec: interfaces: - name: eth0 networkName: pod-network default: true disks: - boot: true virtualMachineDiskName: VM_NAME-boot-dv - virtualMachineDiskName: DISK_NAME
Contoh ini membuat disk
10Gi
(10 gibibyte) bernamaDISK_NAME
dari sumber HTTPhttp://example.com/my-disk-img.qcow2
.Simpan dan tutup manifes VM yang telah diupdate di editor Anda.
Gunakan
kubectl
untuk memulai VM:kubectl virt start vm VM_NAME --kubeconfig KUBECONFIG
Buat disk
Dalam skenario ini, Anda membuat resource disk secara terpisah dari resource VM. Skenario ini memungkinkan Anda membuat disk terlebih dahulu, lalu memasangnya ke VM sesuai kebutuhan.
Blank disk
Untuk membuat disk kosong, selesaikan langkah-langkah berikut.
Buat manifes
VirtualMachineDisk
, seperti my-disk.yaml, di editor pilihan Anda:nano my-disk.yaml
Salin dan tempel definisi YAML berikut:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: DISK_NAME spec: size: 10Gi
Contoh ini membuat disk
10Gi
(10 gibibyte) kosong bernamaDISK_NAME
.Simpan dan tutup manifes disk di editor Anda.
Buat disk menggunakan
kubectl
:kubectl apply -f my-disk.yaml --kubeconfig KUBECONFIG
Ganti
KUBECONFIG
dengan jalur ke file kubeconfig cluster.
Dari gambar
Untuk membuat disk dari image, selesaikan langkah-langkah berikut.
Buat manifes
VirtualMachineDisk
, sepertimy-disk.yaml
, di editor pilihan Anda:nano my-disk.yaml
Salin dan tempel definisi YAML berikut:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: DISK_NAME spec: size: 20Gi source: http: url: https://cloud-images.ubuntu.com/releases/focal/release/ubuntu-20.04-server-cloudimg-amd64.img
Contoh ini membuat disk
20Gi
(20 gibibyte) bernamaDISK_NAME
menggunakan image Ubuntu publik.Simpan dan tutup manifes disk di editor Anda.
Buat disk menggunakan
kubectl
:kubectl apply -f my-disk.yaml --kubeconfig KUBECONFIG
Ganti
KUBECONFIG
dengan jalur ke file kubeconfig cluster.
Langkah berikutnya
- Buat dan gunakan kredensial untuk mengimpor image dari Cloud Storage.
- Membuat dan menggunakan kelas penyimpanan di Google Distributed Cloud.
- Jika Anda tidak lagi memerlukan VM atau resource disk virtualnya, Hapus VM di Google Distributed Cloud.