Dokumen ini ditujukan untuk pemilik aplikasi yang menjalankan Google Distributed Cloud. Dokumen ini menunjukkan cara membuat dan mengelola resource {i>disk<i} untuk {i>virtual<i} (VM) yang menggunakan VM Runtime di GDC.
Sebelum memulai
Untuk menyelesaikan dokumen ini, Anda memerlukan akses ke referensi 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
virtctl
diinstal sebagai plugin untukkubectl
. Jika diperlukan, instal alat klien virtctl.
Membuat VM dengan disk terpasang
Saat membuat VM, Anda bisa memasang boot atau disk data yang ada, dari image (termasuk untuk booting disk), atau buat disk kosong.
Blank disk
Dalam skenario ini, Anda akan membuat disk kosong dan memasangnya ke VM. Ini memungkinkan Anda membuat {i> disk data<i} untuk menyimpan data aplikasi.
Buat manifes yang menentukan
VirtualMachineDisk
danVirtualMachine
, sepertimy-vm.yaml
, dalam 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 membuat.Contoh ini membuat disk
10Gi
(10 gibibyte) kosong bernamaDISK_NAME
. Dispec.disks
VM , Anda juga harus memasang boot disk, misalnya dari gambar seperti yang ditunjukkan 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 {i>cluster kubeconfig<i}.
Dari gambar
Dalam skenario ini, Anda akan membuat disk dari image dan memasangnya ke VM. Ini memungkinkan Anda membuat {i>boot disk<i}, misalnya, dari sebuah {i>image<i}. Anda juga dapat membuat dan memasang {i>disk<i} data dari sebuah {i>image<i}.
Sumber gambar yang didukung
Runtime VM di GDC memungkinkan berbagai format gambar
dan mendukung tiga jenis sumber gambar yang dapat ditentukan dalam
Spesifikasi VirtualMachineDisk
. Masing-masing contoh berikut menghasilkan 20 gibibyte
dari sumber gambar lain yang didukung.
{i>Hypertext Transfer Protocol<i} (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 pada komputer tidak cukup untuk mengakses URL Cloud Storage, Anda harus memberikan memiliki kredensial yang lengkap. 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 telah 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 Konfigurasi akun layanan yang dapat mengakses bucket Cloud Storage.
Gunakan perintah berikut untuk membuat Secret Kubernetes dari browser yang telah didownload file kunci akun layanan:
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 menuju download file JSON kunci akun layanan tertentu. Contoh,bmctl-workspace/.sa-keys/my-project-anthos-baremetal-gcr.json
.KUBECONFIG
: jalur ke cluster {i>kubeconfig<i}.
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 Open Container Initiative (OCI) distribution-spec didukung. Contoh berikut membuat disk dari image yang disimpan di Docker {i>registry<i}.
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 format gambar berikut saat Anda membuat {i>disk<i} dari gambar:
- Arsip GNU zip (gzip) (
.gz
) - RAW (
.raw
,.img
) - Salinan QEMU pada disk image tulis versi 2 (qcow2) (
.qcow2
) - Arsip terkompresi XZ (
.xz
) - File disk Virtual Machine (VMDK) (
.vmdk
) - File VirtualBox Virtual Disk Image (VDI) (
.vdi
) - File gambar Hard Disk Virtual (VHD) (
.vdh
) - File Hard Disk Virtual versi 2 (VDHX) (
.vdhx
) - File gambar disk ISO (
.iso
)
Contoh disk yang dibuat dari image HTTP
Langkah-langkah berikut akan 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 menghasilkan disk
20Gi
(20 gibibyte) yang bernamaVM_NAME-boot-dv
menggunakan Ubuntu publik gambar. 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 {i>cluster kubeconfig<i}.
Disk yang ada
Dalam skenario ini, Anda akan membuat disk kosong dan memasangnya ke VM. Ini memungkinkan Anda membuat {i> disk data<i} 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 memasang {i>disk <i}yang sudah ada bernama
EXISTING_DISK_NAME
.Di bagian
spec.disks
VM, Anda juga harus memasang boot disk, seperti dari gambar 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 {i>cluster kubeconfig<i}.
Mencari disk
Dimulai dengan Google Distributed Cloud versi 1.13.0, saat membuat VM,
Runtime VM di GDC menggunakan nama disk yang Anda tentukan di resource VM untuk
mengatur nomor seri disk. Secara khusus, nama-nama
yang Anda tentukan dengan
spec.disks.virtualMachineDiskName
dalam resource kustom VirtualMachine
yang digunakan dalam
nomor seri {i>disk<i}. Fitur ini memudahkan
Anda untuk menemukan
{i>disk<i} di VM saat Anda perlu
melakukan operasi {i>disk<i}, seperti
pemformatan atau pemasangan.
Misalnya, jika Anda membuat VM dan menentukan boot disk bernama
sample-boot-dv
resource khusus VirtualMachine
Anda 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 membuat daftar disk berdasarkan nomor serinya:
ls -l /dev/disk/by-id/
Respons Anda akan terlihat seperti contoh output ini, dengan 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 serial angka - Jika ada dua {i>disk<i} dengan 20 karakter pertama yang sama, hanya disk {i>disk<i} akan memiliki nomor seri.
Membuat dan memasang disk ke VM yang ada
Jika sudah memiliki VM, Anda bisa membuat dan memasang disk untuk siklus proses aplikasi Anda. VM harus dalam status berhenti sebelum Anda memasang {i>disk<i}.
Blank disk
Dalam skenario ini, Anda akan membuat disk kosong dan memasangnya ke VM. Ini memungkinkan Anda membuat {i> disk data<i} 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 Anda ingin berhenti.KUBECONFIG
: jalur ke file kubeconfig cluster.
Edit resource VM yang ada, seperti
my-vm
:kubectl edit gvm VM_NAME --kubeconfig KUBECONFIG
Memperbarui manifes YAML
VirtualMachine
untuk menambahkanVirtualMachineDisk
di atas, lalu pasang disk di akhir VM Bagianspec.disks
: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 memasangnya ke Pesan Suara.
Gunakan
kubectl
untuk menghentikan VM, jika diperlukan:kubectl virt stop vm VM_NAME --kubeconfig KUBECONFIG
Ganti kode berikut:
VM_NAME
: nama VM yang Anda ingin berhenti.KUBECONFIG
: jalur ke file kubeconfig cluster.
Edit resource VM yang ada, seperti
my-vm
:kubectl edit gvm VM_NAME --kubeconfig KUBECONFIG
Update manifes
VirtualMachine
untuk menambahkan bagianVirtualMachineDisk
di bagian atas, lalu pasang 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 menghasilkan disk
10Gi
(10 gibibyte) yang 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 akan membuat resource disk secara terpisah dari VM Google Cloud Platform. Skenario ini memungkinkan Anda membuat {i>disk<i} sebelumnya, dan kemudian 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 {i>cluster kubeconfig<i}.
Dari gambar
Untuk membuat disk dari image, selesaikan langkah-langkah berikut.
Buat manifes
VirtualMachineDisk
, sepertimy-disk.yaml
, di 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 menghasilkan disk
20Gi
(20 gibibyte) yang 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 {i>cluster kubeconfig<i}.
Langkah selanjutnya
- Membuat dan menggunakan kredensial untuk mengimpor gambar dari Cloud Storage.
- Buat dan gunakan kelas penyimpanan di Google Distributed Cloud.
- Saat Anda tidak lagi membutuhkan VM atau sumber daya disk virtualnya, Menghapus VM di Google Distributed Cloud.