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 Runtime VM 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 beban kerja. Jika diperlukan, coba Google Distributed Cloud di Compute Engine atau lihat ringkasan pembuatan cluster. - Alat klien
virtctl
yang diinstal sebagai plugin untukkubectl
. Jika diperlukan, instal alat klien virtctl.
Membuat VM dengan disk yang terpasang
Saat membuat VM, Anda dapat memasang disk data atau boot yang ada, membuat disk dari image (termasuk untuk disk boot), atau membuat disk kosong.
Blank disk
Dalam skenario ini, Anda akan 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 lampirkan 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 disk booting, 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 disk booting, misalnya, dari image. Anda juga dapat membuat dan melampirkan disk data dari image.
Sumber gambar yang didukung
Runtime VM di GDC memungkinkan berbagai format gambar
dan mendukung tiga jenis sumber gambar yang dapat ditentukan dalam
spesifikasi VirtualMachineDisk
. Setiap contoh berikut membuat disk 20 gibibyte
dari sumber gambar yang didukung yang 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 komputer tidak memadai untuk mengakses URL Cloud Storage, Anda harus memberikan kredensial. Dalam contoh berikut,
my-gcs
adalah secret yang berisi kunci akun layanan yang dienkode 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 menggunakan kunci akun layanan yang didownload untuk membuat cluster, Anda dapat menggunakan kunci akun layanan Container 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 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 informasi selengkapnya tentang cara menggunakan kredensial untuk mengakses Cloud Storage, lihat Membuat dan menggunakan kredensial untuk mengimpor gambar dari Cloud Storage.
Contoh container registry
Registry container yang mematuhi spesifikasi distribusi Open Container Initiative (OCI) didukung. Contoh berikut membuat disk dari image yang disimpan di registry Docker.
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 image 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 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 disk image ISO (
.iso
)
Contoh disk yang dibuat dari image HTTP
Langkah-langkah berikut membuat disk booting 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 ditetapkan 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 akan 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 memasang disk booting, 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 disk
Mulai 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
pemformatan atau pemasangan.
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 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 dari 20 karakter, Runtime VM di GDC hanya menggunakan 20 karakter pertama sebagai nomor serial. - 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 sudah memiliki VM, Anda dapat membuat dan memasang disk untuk mendukung siklus proses aplikasi. VM harus dalam status dihentikan sebelum Anda memasang disk.
Blank disk
Dalam skenario ini, Anda akan 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 lampirkan disk di akhir bagianspec.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 diperbarui 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 lampirkan disk di akhir bagianspec.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 diperbarui 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 selanjutnya
- Membuat dan menggunakan kredensial untuk mengimpor image dari Cloud Storage.
- Membuat dan menggunakan class penyimpanan di Google Distributed Cloud.
- Jika Anda tidak lagi memerlukan VM atau resource disk virtualnya, Hapus VM di Google Distributed Cloud.