Membuat dan mengelola disk virtual di Google Distributed Cloud

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:

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.

  1. Buat manifes yang menentukan VirtualMachineDisk dan VirtualMachine, seperti my-vm.yaml, dalam editor pilihan Anda:

    nano my-vm.yaml
    
  2. 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 bernama DISK_NAME. Di spec.disks VM , Anda juga harus memasang boot disk, misalnya dari gambar seperti yang ditunjukkan bagian berikutnya.

  3. Simpan dan tutup file manifes di editor Anda.

  4. 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. Kolom url 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:

  1. Buat manifes yang menentukan VirtualMachineDisk dan VirtualMachine, seperti my-vm.yaml, di editor pilihan Anda:

    nano my-vm.yaml
    
  2. 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 bernama VM_NAME-boot-dv menggunakan Ubuntu publik gambar. Di bagian spec.disks VM, disk disetel ke boot: true.

  3. Simpan dan tutup manifes di editor Anda.

  4. 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.

  1. Buat manifes VirtualMachine, seperti my-vm.yaml, di editor pilihan Anda:

    nano my-vm.yaml
    
  2. 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.

  3. Simpan dan tutup manifes VM di editor Anda.

  4. 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.

  1. 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.
  2. Edit resource VM yang ada, seperti my-vm:

    kubectl edit gvm VM_NAME --kubeconfig KUBECONFIG
    
  3. Memperbarui manifes YAML VirtualMachine untuk menambahkan VirtualMachineDisk di atas, lalu pasang disk di akhir VM Bagian spec.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 bernama DISK_NAME.

  4. Simpan dan tutup manifes VM yang telah diupdate di editor Anda.

  5. 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.

  1. 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.
  2. Edit resource VM yang ada, seperti my-vm:

    kubectl edit gvm VM_NAME --kubeconfig KUBECONFIG
    
  3. Update manifes VirtualMachine untuk menambahkan bagian VirtualMachineDisk di bagian atas, lalu pasang disk di akhir bagian spec.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 bernama DISK_NAME dari Sumber HTTP http://example.com/my-disk-img.qcow2.

  4. Simpan dan tutup manifes VM yang telah diupdate di editor Anda.

  5. 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.

  1. Buat manifes VirtualMachineDisk, seperti my-disk.yaml, di editor pilihan Anda:

    nano my-disk.yaml
    
  2. 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 bernama DISK_NAME.

  3. Simpan dan tutup manifes disk di editor Anda.

  4. 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.

  1. Buat manifes VirtualMachineDisk, seperti my-disk.yaml, di pilihan Anda:

    nano my-disk.yaml
    
  2. 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 bernama DISK_NAME menggunakan image Ubuntu publik.

  3. Simpan dan tutup manifes disk di editor Anda.

  4. Buat disk menggunakan kubectl:

    kubectl apply -f my-disk.yaml --kubeconfig KUBECONFIG
    

    Ganti KUBECONFIG dengan jalur ke file {i>cluster kubeconfig<i}.

Langkah selanjutnya