Mengaktifkan atau menonaktifkan Runtime VM di GDC

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

Sebelum memulai

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

Mengaktifkan Runtime VM di GDC

VM Runtime di GDC otomatis diinstal di GKE pada Bare Metal versi 1.10 atau yang lebih tinggi, tetapi dinonaktifkan secara default. Sebelum dapat menjalankan resource VM di GKE pada Bare Metal, 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. GKE di Bare Metal menghasilkan file kubeconfig di workstation admin saat Anda membuat cluster. Secara default, jalurnya adalah bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig.

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

Setelan tambahan, seperti untuk emulasi atau format 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 dalam spesifikasi:

    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: disetel ke benar (true) untuk mengaktifkan Runtime VM di GDC
    • useEmulation: Jika node Anda tidak mendukung virtualisasi hardware, atau Anda tidak yakin, tetapkan nilai ke true. Jika tersedia, virtualisasi hardware memberikan performa yang lebih baik daripada emulasi software. Kolom useEmulation akan ditetapkan secara default ke false, jika tidak ditentukan.
    • vmImageFormat: Mendukung dua nilai format disk image: raw dan qcow2. Jika Anda tidak menyetel vmImageFormat, VM Runtime di GDC akan menggunakan format disk image raw untuk membuat VM. Format raw dapat memberikan performa yang lebih baik dibandingkan qcow2, salinan dalam format tulis, tetapi mungkin menggunakan lebih banyak disk. Untuk mengetahui informasi selengkapnya tentang format image untuk VM, lihat Format file image disk dalam dokumentasi QEMU.
  3. Simpan resource kustom tersebut di editor Anda.

  4. Pastikan resource kustom VMRuntime diaktifkan:

    kubectl describe vmruntime vmruntime
    

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

Menonaktifkan Runtime VM di GDC

Jika tidak perlu lagi menggunakan Runtime VM 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 dan nilai untuk opsi konfigurasi berikut:

    • --force: Setel 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 dalam spesifikasi:

    apiVersion: vm.cluster.gke.io/v1`
    kind: VMRuntime
    metadata:
      name: vmruntime
    spec:
      enabled: false
      useEmulation: true
      vmImageFormat: qcow2
    
  3. Simpan spesifikasi resource kustom yang telah 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
    

    Runtime VM 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 Runtime VM di resource 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 disetel ke false, VM Runtime di GDC akan mencoba melindungi VM yang sedang berjalan. Hapus semua VM yang 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 proses yang akan terjadi pada VM saat anotasi ini ditetapkan ke true atau false, dan jika Anda menentukan parameter --force=true atau tidak:

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

Runtime VM pada pemeriksaan preflight GDC

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

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

Pemeriksaan preflight Runtime VM pada GDC berjalan saat Anda melakukan salah satu operasi berikut:

  1. Mengaktifkan Runtime VM di GDC

  2. Mengaktifkan VM Runtime pada fitur GDC, seperti useEmulation

  3. Mengupgrade cluster

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

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

Anda dapat meluncurkan VM saat pemeriksaan preflight VM terbaru pada GDC berhasil. Jika pemeriksaan preflight gagal, pembuatan VM akan diblokir dan Anda akan mengalami error pemeriksaan preflight.

Memverifikasi keberhasilan pemeriksaan preflight

Untuk memverifikasi apakah pemeriksaan preflight berhasil, jalankan perintah berikut:

  1. Menemukan pemeriksaan preflight terakhir yang dilakukan:

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

    Output 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 preflight, 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
    ...
    

Pemeriksaan preflight debug gagal

Jika pemeriksaan preflight gagal, lakukan langkah-langkah berikut untuk melakukan debug:

  1. Menemukan pemeriksaan preflight terakhir yang dilakukan.

    kubectl get vmruntimepfc -n vm-system
    
  2. Periksa status pemeriksaan preflight tersebut untuk 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 ini dan jalankan kembali Runtime VM pada pemeriksaan preflight GDC. Berikut ini contoh manifes YAML VMRuntimePreflightCheck:

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

Langkah selanjutnya