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:
- Akses ke GKE pada Bare Metal versi 1.12.0 (
anthosBareMetalVersion: 1.12.0
) atau cluster yang lebih tinggi. Anda dapat menggunakan jenis cluster apa pun yang mampu menjalankan workload. Jika perlu, coba GKE di Bare Metal di Compute Engine atau lihat ringkasan pembuatan cluster. - Alat command line
bmctl
. Untuk mengetahui informasi selengkapnya, lihat Mendownload dan menginstal alatbmctl
.
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.
Edit resource kustom
VMRuntime
:kubectl edit vmruntime
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 GDCuseEmulation
: 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. KolomuseEmulation
akan ditetapkan secara default kefalse
, jika tidak ditentukan.vmImageFormat
: Mendukung dua nilai format disk image:raw
danqcow2
. Jika Anda tidak menyetelvmImageFormat
, VM Runtime di GDC akan menggunakan format disk imageraw
untuk membuat VM. Formatraw
dapat memberikan performa yang lebih baik dibandingkanqcow2
, 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.
Simpan resource kustom tersebut di editor Anda.
Pastikan resource kustom
VMRuntime
diaktifkan:kubectl describe vmruntime vmruntime
Detail resource kustom
VMRuntime
menyertakan bagianStatus
. Runtime VM di GDC diaktifkan dan berfungsi saatVMRuntime.Status.Ready
ditampilkan sebagaitrue
.
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 ketrue
untuk mengonfirmasi bahwa Anda ingin menghapus resource VM yang ada. Nilai defaultnya adalahfalse
.
Resource kustom
Untuk menonaktifkan runtime, perbarui resource kustom VMRuntime
:
Edit resource kustom
VMRuntime
:kubectl edit vmruntime
Tetapkan
enabled:false
dalam spesifikasi:apiVersion: vm.cluster.gke.io/v1` kind: VMRuntime metadata: name: vmruntime spec: enabled: false useEmulation: true vmImageFormat: qcow2
Simpan spesifikasi resource kustom yang telah diperbarui di editor Anda.
Untuk memverifikasi bahwa resource kustom
VMRuntime
dinonaktifkan, lihat pod yang berjalan di namespacevm-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:
Mengaktifkan Runtime VM di GDC
Mengaktifkan VM Runtime pada fitur GDC, seperti useEmulation
Mengupgrade cluster
Hapus label
kubevm.io/VM-SkipSchedule
di nodeMembuat Runtime VM secara independen pada objek pemeriksaan preflight GDC dengan menjalankan perintah
bmctl check vmruntimepfc --kubeconfig KUBECONFIG_PATH
atau menerapkan manifes YAMLVMRuntimePreflightCheck
.
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:
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
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:
Menemukan pemeriksaan preflight terakhir yang dilakukan.
kubectl get vmruntimepfc -n vm-system
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 ...
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