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 referensi dan alat berikut:

Mengaktifkan Runtime VM di GDC

Runtime VM di GDC diinstal otomatis di Google Distributed Cloud versi 1.10 atau yang lebih tinggi, tetapi dinonaktifkan secara default. Sebelum Anda dapat menjalankan VM resource di Google Distributed Cloud, Anda harus mengaktifkan Runtime VM 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 admin saat membuat cluster. Secara {i>default<i}, jalurnya adalah bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig.

    Jika Runtime VM di GDC sudah diaktifkan, perintah akan menampilkan sebuah {i>error<i}.

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

Resource kustom

Untuk mengaktifkan runtime, update resource kustom VMRuntime. Kustom ini resource 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 true (benar) untuk mengaktifkan Runtime VM di GDC
    • useEmulation: Jika node Anda tidak mendukung virtualisasi hardware, atau Anda tidak yakin, tetapkan nilainya ke true. Jika tersedia, hardware virtualisasi memberikan kinerja yang lebih baik daripada emulasi perangkat lunak. Tujuan Jika tidak ditentukan, kolom useEmulation akan ditetapkan secara default ke false.
    • vmImageFormat: Mendukung dua nilai format disk image: raw dan qcow2. Jika Anda tidak menetapkan vmImageFormat, VM Runtime di GDC menggunakan format disk image raw untuk membuat atau VM. Format raw dapat memberikan performa yang lebih baik selama qcow2, menyalin dalam format tulis, tetapi mungkin menggunakan lebih banyak {i>disk<i}. Untuk mengetahui informasi selengkapnya tentang format image untuk VM Anda. Format file gambar disk dalam dokumentasi QEMU.
  3. Simpan resource kustom di editor Anda.

  4. Pastikan resource kustom VMRuntime telah diaktifkan:

    kubectl describe vmruntime vmruntime
    

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

Nonaktifkan 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 Anda dan nilai untuk opsi konfigurasi berikut:

    • --force: Setel ke true untuk mengonfirmasi bahwa Anda ingin menghapus VM yang ada Google Cloud Platform. Nilai defaultnya adalah false.

Resource kustom

Untuk menonaktifkan runtime, update 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 diupdate 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 hanya jika pod yang milik deployment vmruntime-controller-manager yang berjalan di namespace.

Memahami perilaku untuk menjalankan VM

Anotasi baremetal.cluster.gke.io/vmrumtime-force-disable dapat digunakan di Runtime VM pada resource GDC untuk menentukan perilaku saat runtime sedang 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, Runtime VM di GDC akan mencoba untuk melindungi VM yang berjalan. Hapus semua VM yang berjalan sebelum Runtime VM di GDC dinonaktifkan, atau tentukan --force=true dengan perintah bmctl disable vmruntime seperti yang ditunjukkan dalam bagian.

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

Status cluster --force anotasi vmrumtime-force-disable Perilaku
Tidak ada VM T/A T/A Nonaktifkan Runtime VM di GDC.
VM yang ada Benar Benar Hapus semua VM yang berjalan dan resource terkait. Nonaktifkan Runtime VM di GDC.
Benar Salah Hapus semua VM yang berjalan dan resource terkait. Nonaktifkan Runtime VM di GDC.
Salah Benar Perintah untuk menghapus VM yang berjalan dan resource terkait. Saat semua berjalan VM telah dihapus, nonaktifkan Runtime VM di GDC.
Salah Salah Jangan menghapus VM yang sedang berjalan. Jangan nonaktifkan Runtime VM di GDC. Perintah bmctl akan menampilkan {i>error<i}.

Runtime VM pada pemeriksaan preflight GDC

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

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

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

  1. Mengaktifkan Runtime VM di GDC

  2. Mengaktifkan Runtime VM di fitur GDC, seperti useEmulation

  3. Upgrade 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 Runtime VM terbaru pada pemeriksaan preflight GDC berhasil. Jika pemeriksaan preflight gagal, pembuatan VM diblokir dan Anda mendapatkan error pemeriksaan preflight.

Memverifikasi keberhasilan pemeriksaan preflight

Untuk memverifikasi apakah pemeriksaan preflight berhasil, jalankan perintah berikut:

  1. Temukan pemeriksaan preflight 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 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 men-debug:

  1. Menemukan pemeriksaan preflight terakhir yang dilakukan.

    kubectl get vmruntimepfc -n vm-system
    
  2. Periksa status pemeriksaan preflight 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 kembali VM Runtime pada pemeriksaan preflight GDC. Tujuan berikut ini menunjukkan contoh manifes YAML VMRuntimePreflightCheck:

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

Langkah selanjutnya