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 Google Distributed Cloud versi 1.12.0 (
anthosBareMetalVersion: 1.12.0) atau cluster 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
virtctlyang diinstal sebagai plugin untukkubectl. Jika diperlukan, 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 memasangnya ke VM. Skenario ini memungkinkan Anda membuat disk data untuk menyimpan data aplikasi.
Buat manifes yang menentukan
VirtualMachineDiskdanVirtualMachine, sepertimy-vm.yaml, di editor pilihan Anda:nano my-vm.yamlSalin 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_NAMEGanti 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.disksVM, Anda juga harus memasang 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 KUBECONFIGGanti
KUBECONFIGdengan jalur ke file kubeconfig cluster.
Dari image
Dalam skenario ini, Anda membuat disk dari image dan memasangnya ke VM. Skenario ini memungkinkan Anda membuat boot disk, misalnya, dari image. Anda juga dapat membuat dan memasang disk data dari image.
Sumber image yang didukung
Hypertext Transfer Protocol (HTTP)
Contoh
VirtualMachineDiskberikut menunjukkan struktur dasar untuk sumber image HTTP. Kolomurlmengharapkan 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-sharedCloud 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-gcsadalah secret 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-sharedJika menggunakan kunci akun layanan yang didownload untuk membuat cluster, Anda dapat menggunakan kunci akun layanan Artifact Registry untuk akses Cloud Storage. Jika 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 KUBECONFIGGanti kode berikut:
SECRET_NAME: nama untuk Secret Anda.KEY_FILE: jalur ke file JSON kunci akun layanan yang didownload. Misalnya,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 image dari Cloud Storage.
Contoh container registry
Container registry yang mematuhi Open Container Initiative (OCI) distribusi-spec 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 image yang valid
Anda dapat menggunakan salah satu format image berikut saat membuat disk dari image:
- Arsip GNU zip (gzip) (
.gz) - RAW (
.raw,.img) - Disk image QEMU copy on write versi 2 (qcow2) (
.qcow2) - Arsip terkompresi XZ (
.xz) - File disk Virtual Machine (VMDK) (
.vmdk) - File Virtual Disk Image (VDI) VirtualBox (
.vdi) - File image Virtual Hard Disk (VHD) (
.vdh) - File Virtual Hard Disk 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
VirtualMachineDiskdanVirtualMachine, seperti my-vm.yaml, di editor pilihan Anda:nano my-vm.yamlSalin 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-dvContoh ini membuat disk
20Gi(20 gibibyte) bernamaVM_NAME-boot-dvmenggunakan image Ubuntu publik. Di bagianspec.disksVM, disk ditetapkan keboot: true.Simpan dan tutup manifes di editor Anda.
Buat VM dan disk menggunakan
kubectl:kubectl apply -f my-vm.yaml --kubeconfig KUBECONFIGGanti
KUBECONFIGdengan jalur ke file kubeconfig cluster.
Disk yang ada
Dalam skenario ini, Anda membuat disk kosong dan memasangnya 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.yamlSalin 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_NAMEContoh ini memasang disk yang ada bernama
EXISTING_DISK_NAME.Di bagian
spec.disksVM, Anda juga harus memasang 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 KUBECONFIGGanti
KUBECONFIGdengan jalur ke file kubeconfig cluster.
Menemukan disk
Mulai dari Google Distributed Cloud versi 1.13.0, saat Anda membuat VM, VM Runtime di GDC akan 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 output contoh 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
virtualMachineDiskNamelebih panjang dari 20 karakter, VM Runtime di GDC hanya akan 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 memasang disk ke VM yang ada
Jika memiliki VM yang ada, Anda dapat membuat dan memasang disk untuk mendukung siklus proses aplikasi. VM harus dalam status berhenti sebelum Anda memasang disk.
Blank disk
Dalam skenario ini, Anda membuat disk kosong dan memasangnya ke VM. Skenario ini memungkinkan Anda membuat disk data untuk menyimpan data aplikasi.
Gunakan
kubectluntuk menghentikan VM, jika diperlukan:kubectl virt stop vm VM_NAME --kubeconfig KUBECONFIGGanti 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 KUBECONFIGPerbarui manifes YAML
VirtualMachineuntuk menambahkan bagianVirtualMachineDiskdi bagian atas, lalu pasang disk di akhir bagianspec.disksVM: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_NAMEContoh ini membuat disk
10Gi(10 gibibyte) kosong bernamaDISK_NAME.Simpan dan tutup manifes VM yang diperbarui di editor Anda.
Gunakan
kubectluntuk memulai VM:kubectl virt start vm VM_NAME --kubeconfig KUBECONFIG
Dari image
Dalam skenario ini, Anda membuat disk dari image sumber dan memasangnya ke VM.
Gunakan
kubectluntuk menghentikan VM, jika diperlukan:kubectl virt stop vm VM_NAME --kubeconfig KUBECONFIGGanti 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 KUBECONFIGPerbarui manifes
VirtualMachineuntuk menambahkan bagianVirtualMachineDiskdi bagian atas, lalu pasang disk di akhir bagianspec.disksVM: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_NAMEContoh ini membuat disk
10Gi(10 gibibyte) bernamaDISK_NAMEdari sumber HTTPhttp://example.com/my-disk-img.qcow2.Simpan dan tutup manifes VM yang diperbarui di editor Anda.
Gunakan
kubectluntuk memulai VM:kubectl virt start vm VM_NAME --kubeconfig KUBECONFIG
Membuat 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.yamlSalin dan tempel definisi YAML berikut:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: DISK_NAME spec: size: 10GiContoh 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 KUBECONFIGGanti
KUBECONFIGdengan jalur ke file kubeconfig cluster.
Dari image
Untuk membuat disk dari image, selesaikan langkah-langkah berikut.
Buat manifes
VirtualMachineDisk, sepertimy-disk.yaml, di editor pilihan Anda:nano my-disk.yamlSalin 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.imgContoh ini membuat disk
20Gi(20 gibibyte) bernamaDISK_NAMEmenggunakan image Ubuntu publik.Simpan dan tutup manifes disk di editor Anda.
Buat disk menggunakan
kubectl:kubectl apply -f my-disk.yaml --kubeconfig KUBECONFIGGanti
KUBECONFIGdengan jalur ke file kubeconfig cluster.
Langkah berikutnya
- Membuat dan menggunakan kredensial untuk mengimpor image dari Cloud Storage.
- Membuat dan menggunakan class penyimpanan di Google Distributed Cloud.
- Jika tidak lagi memerlukan VM atau resource disk virtualnya, Hapus VM di Google Distributed Cloud.