Mengaktifkan atau menonaktifkan VM Runtime di GDC

Dokumen ini menunjukkan cara mengaktifkan atau menonaktifkan VM Runtime di Google Distributed Cloud dengan memperbarui resource kustom VMRuntime atau menjalankan perintah bmctl.

Sebelum memulai

Untuk mengaktifkan atau menonaktifkan VM Runtime di GDC, Anda memerlukan akses ke resource dan alat berikut:

Mengaktifkan VM Runtime di GDC

VM Runtime di GDC otomatis diinstal di Google Distributed Cloud versi 1.10 atau yang lebih tinggi, tetapi dinonaktifkan secara default. Sebelum dapat menjalankan resource VM di Google Distributed Cloud, Anda harus mengaktifkan VM Runtime di GDC.

bmctl

  • Untuk mengaktifkan runtime, gunakan alat bmctl:

    bmctl enable vmruntime --kubeconfig KUBECONFIG_PATH
    

    Berikan jalur ke file kubeconfig untuk cluster Anda. Google Distributed Cloud membuat file kubeconfig di workstation admin saat Anda membuat cluster. Secara default, jalur ini adalah bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig.

    Jika VM Runtime di GDC sudah diaktifkan, perintah akan menampilkan error.

Setelan tambahan, seperti untuk format emulasi atau gambar, dapat dikonfigurasi dengan mengedit resource kustom VMRuntime.

Resource kustom

Untuk mengaktifkan runtime, perbarui resource kustom VMRuntime. Resource kustom ini diinstal secara default.

  1. Edit resource kustom VMRuntime:

    kubectl edit vmruntime
    
  2. Tetapkan enabled:true di spec:

    apiVersion: vm.cluster.gke.io/v1
    kind: VMRuntime
    metadata:
      name: vmruntime
    spec:
      enabled: true
      # useEmulation defaults to "false" if not set.
      useEmulation: true
      # vmImageFormat defaults to "qcow2" if not set.
      vmImageFormat: qcow2
    

    Di bagian spec sebelumnya, nilai berikut dapat ditetapkan:

    • enabled: ditetapkan ke true untuk mengaktifkan VM Runtime di GDC
    • useEmulation: Jika node Anda tidak mendukung virtualisasi hardware, atau Anda tidak yakin, tetapkan nilainya ke true. Jika tersedia, virtualisasi hardware memberikan performa yang lebih baik daripada emulasi software. Kolom useEmulation ditetapkan ke false secara default, jika tidak ditentukan.
    • vmImageFormat: Mendukung dua nilai format image disk: raw dan qcow2. Jika Anda tidak menetapkan vmImageFormat, VM Runtime di GDC akan menggunakan format image disk raw untuk membuat VM. Format raw dapat memberikan performa yang lebih baik daripada qcow2, format salin saat tulis, tetapi dapat menggunakan lebih banyak disk. Untuk mengetahui informasi selengkapnya tentang format image untuk VM Anda, lihat Format file image disk dalam dokumentasi QEMU.
  3. Simpan resource kustom di editor Anda.

  4. Pastikan resource kustom VMRuntime diaktifkan:

    kubectl describe vmruntime vmruntime
    

    Detail resource kustom VMRuntime mencakup bagian Status. VM Runtime di GDC diaktifkan dan berfungsi saat VMRuntime.Status.Ready ditampilkan sebagai true.

Menonaktifkan VM Runtime di GDC

Jika tidak lagi perlu menggunakan VM Runtime di GDC, Anda dapat menonaktifkan fitur ini.

bmctl

  • Untuk menonaktifkan runtime, gunakan alat bmctl:

    bmctl disable vmruntime --kubeconfig KUBECONFIG_PATH \
      --force=true
    

    Berikan jalur ke file kubeconfig untuk cluster Anda dan nilai untuk opsi konfigurasi berikut:

    • --force: Tetapkan ke true untuk mengonfirmasi bahwa Anda ingin menghapus resource VM yang ada. Nilai defaultnya adalah false.

Resource kustom

Untuk menonaktifkan runtime, perbarui resource kustom VMRuntime:

  1. Edit resource kustom VMRuntime:

    kubectl edit vmruntime
    
  2. Tetapkan enabled:false di spec:

    apiVersion: vm.cluster.gke.io/v1`
    kind: VMRuntime
    metadata:
      name: vmruntime
    spec:
      enabled: false
      useEmulation: true
      vmImageFormat: qcow2
    
  3. Simpan spesifikasi resource kustom yang diperbarui di editor Anda.

  4. Untuk memverifikasi bahwa resource kustom VMRuntime dinonaktifkan, lihat pod yang berjalan di namespace vm-system:

    kubectl get pods --namespace vm-system
    

    VM Runtime di GDC dinonaktifkan jika hanya pod yang termasuk dalam deployment vmruntime-controller-manager yang berjalan di namespace.

Memahami perilaku untuk menjalankan VM

Anotasi baremetal.cluster.gke.io/vmrumtime-force-disable dapat digunakan pada resource VM Runtime di GDC untuk menentukan perilaku saat runtime dinonaktifkan saat VM berjalan di cluster.

Contoh berikut menunjukkan bahwa nilai anotasi ini ditetapkan ke false secara default:

// VM runtime yaml file
apiVersion: vm.cluster.gke.io/v1
kind: VMRuntime
metadata:
  annotations:
    baremetal.cluster.gke.io/vmrumtime-force-disable: "false"
  name: vmruntime
[...]

Jika anotasi ini ditetapkan ke false, VM Runtime di GDC akan mencoba melindungi VM yang sedang berjalan. Hapus semua VM yang sedang berjalan sebelum VM Runtime di GDC dinonaktifkan, atau tentukan parameter --force=true dengan perintah bmctl disable vmruntime seperti yang ditunjukkan di bagian sebelumnya.

Tabel berikut menjelaskan apa yang terjadi pada VM yang sedang berjalan saat anotasi ini ditetapkan ke true atau false dan jika Anda menentukan parameter --force=true atau tidak:

Status cluster Parameter --force Anotasi vmrumtime-force-disable Perilaku
Tidak ada VM T/A T/A Menonaktifkan VM Runtime di GDC.
VM yang ada Benar Benar Menghapus semua VM yang sedang berjalan dan resource terkait. Menonaktifkan the VM Runtime di GDC.
Benar Salah Menghapus semua VM yang sedang berjalan dan resource terkait. Menonaktifkan the VM Runtime di GDC.
Salah Benar Meminta untuk menghapus VM yang sedang berjalan dan resource terkait. Setelah semua VM yang sedang berjalan dihapus, nonaktifkan VM Runtime di GDC.
Salah Salah Jangan hapus VM yang ada dan sedang berjalan. Jangan nonaktifkan the VM Runtime di GDC. Perintah bmctl menampilkan error.

Pemeriksaan awal VM Runtime di GDC

Pemeriksaan awal VM Runtime di GDC memvalidasi serangkaian prasyarat di lingkungan mesin sebelum menggunakan VM Runtime di GDC dan VM. Pembuatan VM diblokir jika pemeriksaan awal VM Runtime di GDC gagal. Pemeriksaan awal VM Runtime di GDC berjalan secara otomatis saat spec.enabled ditetapkan ke true.

kubectl label nodes NODE_NAME "kubevm.io/VM-SkipSchedule"= --kubeconfig KUBECONFIG_PATH

Pemeriksaan awal VM Runtime di GDC berjalan saat Anda melakukan salah satu operasi berikut:

  1. Mengaktifkan VM Runtime di GDC

  2. Mengaktifkan fitur VM Runtime di GDC, seperti useEmulation

  3. Mengupgrade cluster

  4. Menghapus label kubevm.io/VM-SkipSchedule di node

  5. Membuat objek pemeriksaan awal VM Runtime di GDC secara independen dengan menjalankan perintah bmctl check vmruntimepfc --kubeconfig KUBECONFIG_PATH atau menerapkan manifes YAML VMRuntimePreflightCheck.

Anda dapat meluncurkan VM saat pemeriksaan awal VM Runtime di GDC terbaru berhasil. Jika pemeriksaan awal gagal, pembuatan VM akan diblokir dan Anda akan mendapatkan error pemeriksaan awal.

Memverifikasi keberhasilan pemeriksaan awal

Untuk memverifikasi apakah pemeriksaan awal berhasil, jalankan perintah berikut:

  1. Temukan pemeriksaan awal terakhir yang dilakukan:

    kubectl get vmruntimepfc -n vm-system --kubeconfig KUBECONFIG_PATH
    

    Output-nya akan terlihat seperti contoh berikut:

    NAME                                                             PASS    AGE
    vmruntime-preflight-check-6ee61513-ea5d-4340-9374-90396cac129e   false   42s
    vmruntime-preflight-check-f8d71751-a01c-471e-bab5-3370fc2addd5   true    21s
    
  2. Untuk menemukan status pemeriksaan awal, jalankan perintah berikut:

    kubectl get vmruntime vmruntime -o yaml --kubeconfig KUBECONFIG_PATH
    
    ...
      preflightCheckSummary:
      preflightCheckSummary:
        featureStatuses:
          CPU:
            passed: true
          KVM:
            passed: true
        preflightCheckName: vmruntime-preflight-check-f8d71751-a01c-471e-bab5-3370fc2addd5
        preflightCheckPassed: true
    ...
    

Men-debug kegagalan pemeriksaan awal

Jika pemeriksaan awal gagal, lakukan langkah-langkah berikut untuk men-debug:

  1. Temukan pemeriksaan awal terakhir yang dilakukan.

    kubectl get vmruntimepfc -n vm-system
    
  2. Periksa status pemeriksaan awal tersebut untuk mengetahui detailnya.

    kubectl get vmruntimepfc -n vm-system \
        vmruntime-preflight-check-6ee61513-ea5d-4340-9374-90396cac129e -o yaml \
        --kubeconfig KUBECONFIG_PATH
    
    ...
    status:
    checks:
      worker-0--52229ee15841099-22c41577139a7b8c.lab.anthos:
        passed: false
        results:
        - checkName: CPU
          passed: true
        - checkName: KVM
          message: |
            command terminated with exit code 1
            ls: /mnt/dev/kvm: No such file or directory
          passed: false
    ...
    
  3. Perbaiki masalah dan jalankan pemeriksaan awal VM Runtime di GDC lagi. Berikut menunjukkan contoh manifes YAML VMRuntimePreflightCheck:

    apiVersion: vm.cluster.gke.io/v1
    kind: VMRuntimePreflightCheck
    metadata:
      name: vmruntime-preflight-check-manual
      namespace: vm-system
    

Langkah berikutnya