Mengaktifkan atau menonaktifkan Runtime VM di GDC

Dokumen ini menunjukkan cara mengaktifkan atau menonaktifkan Runtime VM di Google Distributed Cloud dengan mengupdate 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

Runtime VM di GDC diinstal secara otomatis di Google Distributed Cloud versi 1.10 atau yang lebih baru, tetapi dinonaktifkan secara default. Sebelum dapat menjalankan resource VM 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 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: ditetapkan ke benar untuk mengaktifkan Runtime VM di GDC
    • useEmulation: Jika node Anda tidak mendukung virtualisasi hardware, atau Anda tidak yakin, tetapkan nilai ke benar. Jika tersedia, virtualisasi hardware memberikan performa yang lebih baik daripada emulasi software. Kolom useEmulation ditetapkan secara default ke false, jika tidak ditentukan.
    • vmImageFormat: Mendukung dua nilai format image disk: raw dan qcow2. Jika Anda tidak menetapkan vmImageFormat, Runtime VM di GDC akan menggunakan format image disk raw untuk membuat VM. Format raw dapat memberikan performa yang lebih baik dibandingkan qcow2, format copy on write, tetapi dapat menggunakan lebih banyak disk. Untuk 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 menyertakan bagian Status. Runtime VM di GDC diaktifkan dan berfungsi saat VMRuntime.Status.Ready ditampilkan sebagai true.

Menonaktifkan Runtime VM di GDC

Jika tidak lagi memerlukan 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: 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 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
    

    Runtime VM di GDC dinonaktifkan jika hanya 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 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 ditetapkan ke false, Runtime VM di GDC akan mencoba melindungi VM yang sedang berjalan. Hapus semua VM yang berjalan sebelum Runtime VM di GDC dinonaktifkan, atau tentukan parameter --force=true dengan perintah bmctl disable vmruntime seperti yang ditunjukkan di bagian sebelumnya.

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

Status cluster Parameter --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 Permintaan untuk menghapus VM yang sedang berjalan dan resource terkait. Setelah semua VM yang berjalan dihapus, nonaktifkan Runtime VM di GDC.
Salah Salah Jangan hapus VM yang ada dan sedang berjalan. Jangan nonaktifkan Runtime VM di GDC. Perintah bmctl menampilkan error.

Runtime VM di pemeriksaan pra-penerbangan GDC

Pemeriksaan pra-penerbangan Runtime VM di GDC memvalidasi serangkaian prasyarat di lingkungan mesin sebelum menggunakan Runtime VM di GDC dan VM. Pembuatan VM diblokir jika pemeriksaan pra-penerbangan Runtime VM di GDC gagal. Pemeriksaan pra-penerbangan 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 pra-penerbangan Runtime VM di GDC berjalan saat Anda melakukan salah satu operasi berikut:

  1. Mengaktifkan Runtime VM di GDC

  2. Mengaktifkan Runtime VM pada fitur GDC, seperti useEmulation

  3. Mengupgrade cluster

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

  5. Buat Runtime VM secara independen pada objek pemeriksaan pra-penerbangan 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 pra-penerbangan GDC berhasil. Jika pemeriksaan pra-penerbangan gagal, pembuatan VM akan diblokir dan Anda akan mendapatkan error pemeriksaan pra-penerbangan.

Memverifikasi keberhasilan pemeriksaan pra-penerbangan

Untuk memverifikasi apakah pemeriksaan pra-penerbangan 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-penerbangan, 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 pra-penerbangan debug gagal

Jika pemeriksaan pra-penerbangan 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 pra-penerbangan 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 masalahnya dan jalankan Runtime VM di pemeriksaan pra-penerbangan GDC lagi. Berikut contoh manifes YAML VMRuntimePreflightCheck:

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

Langkah selanjutnya