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 diinstal secara otomatis 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 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 VM Runtime di GDC
    • useEmulation: Jika node Anda tidak mendukung virtualisasi hardware, atau Anda tidak yakin, tetapkan nilai ke benar (true). Jika tersedia, virtualisasi hardware memberikan performa yang lebih baik daripada emulasi software. Kolom useEmulation secara default ditetapkan ke false, jika tidak ditentukan.
    • vmImageFormat: Mendukung dua nilai format image disk: raw dan qcow2. Jika Anda tidak menyetel vmImageFormat, VM Runtime di GDC akan menggunakan format image disk raw untuk membuat VM. Format raw dapat memberikan peningkatan performa dibandingkan qcow2, format salin saat menulis, tetapi dapat menggunakan lebih banyak disk. Untuk mengetahui informasi selengkapnya tentang format gambar 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. Runtime VM di GDC diaktifkan dan berfungsi saat VMRuntime.Status.Ready ditampilkan sebagai true.

Menonaktifkan VM Runtime di GDC

Jika tidak perlu lagi 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: 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 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 deployment vmruntime-controller-manager yang berjalan di namespace.

Memahami perilaku untuk VM yang berjalan

Anotasi baremetal.cluster.gke.io/vmrumtime-force-disable dapat digunakan pada VM Runtime 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 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 --force parameter Anotasi vmrumtime-force-disable Perilaku
Tidak ada VM T/A T/A Nonaktifkan VM Runtime di GDC.
VM yang ada Benar Benar Hapus semua VM yang sedang berjalan dan resource terkait. Nonaktifkan VM Runtime di GDC.
Benar Salah Hapus semua VM yang sedang berjalan dan resource terkait. Nonaktifkan VM Runtime di GDC.
Salah Benar Minta untuk menghapus VM yang sedang berjalan dan resource terkait. Setelah semua VM yang sedang berjalan dihapus, nonaktifkan VM Runtime di GDC.
Salah Salah Jangan menghapus VM yang ada dan sedang berjalan. Jangan menonaktifkan Runtime VM di GDC. Perintah bmctl menampilkan error.

Pemeriksaan awal VM Runtime di GDC

Pemeriksaan pra-penerbangan VM Runtime di GDC memvalidasi serangkaian prasyarat di lingkungan komputer 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 disetel ke benar (true).

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

Pemeriksaan pendahuluan 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. Buat objek pemeriksaan awal GDC VM Runtime secara terpisah dengan menjalankan perintah bmctl check vmruntimepfc --kubeconfig KUBECONFIG_PATH atau menerapkan manifes YAML VMRuntimePreflightCheck.

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

Memverifikasi keberhasilan pemeriksaan preflight

Untuk memverifikasi apakah pemeriksaan awal berhasil, jalankan perintah berikut:

  1. Temukan pemeriksaan pra-penerbangan 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 pra-peluncuran, 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 preflight

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

  1. Temukan pemeriksaan pra-penerbangan 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 pemeriksaan pra-penerbangan VM Runtime di GDC lagi. Berikut adalah contoh manifes YAML VMRuntimePreflightCheck:

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

Langkah berikutnya