Dokumen ini menunjukkan cara mengonfigurasi kebijakan ketersediaan tinggi untuk virtual machine (VM) yang berjalan menggunakan VM Runtime di GDC.
Saat Anda
mengaktifkan VM Runtime di GDC,
cluster akan membuat objek VMHighAvailabilityPolicy bernama default
. Objek ini menentukan strategi pemulihan default jika node cluster yang menjalankan VM gagal. Kemungkinan strategi pemulihan default adalah:
- Jadwalkan ulang: Jadwalkan ulang VM di node cluster lain.
- Abaikan: Tidak melakukan apa pun.
Awalnya, strategi pemulihan default ditetapkan ke Reschedule
.
Strategi pemulihan default Reschedule
sesuai dalam situasi berikut:
Cluster Anda memiliki setidaknya dua node pekerja.
Disk VM Anda disediakan menggunakan class penyimpanan berbasis file jaringan. Artinya, class penyimpanan didasarkan pada sistem file jaringan yang mengoordinasikan kunci file POSIX di berbagai klien. Network File System (NFS) adalah contoh class penyimpanan berbasis file jaringan.
Jika VM Anda menggunakan penyimpanan lokal atau sistem penyimpanan berbasis blok, sebaiknya tetapkan strategi pemulihan default ke Ignore
. Kami memberikan rekomendasi ini karena alasan berikut:
Jika VM Anda menggunakan penyimpanan lokal, dan node gagal, tidak ada cara untuk memulihkan data yang disimpan dan memindahkannya ke node baru.
Jika VM Anda menggunakan sistem penyimpanan berbasis blok, penyimpanan mungkin tidak memiliki jaminan pelepasan yang memadai. Hal ini dapat menyebabkan akses disk serentak dan kerusakan data selama penjadwalan VM.
Memeriksa objek VMHighAvailabilityPolicy
Pastikan ada objek VMHighAvailabilityPolicy:
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get VMHighAvailabilityPolicy --namespace vm-system
Ganti USER_CLUSTER_KUBECONFIG dengan jalur file kubeconfig cluster pengguna Anda.
Output menunjukkan bahwa ada objek VMHighAvailabilityPolicy bernama
default
. Dalam output, Anda juga dapat melihat nilai
defaultRecoveryStrategy
saat ini. Misalnya, output berikut menunjukkan bahwa
nilai defaultRecoveryStrategy
saat ini adalah Reschedule
:
vm-system default 5m55s Reschedule 15s 1m30s
Dapatkan tampilan mendetail objek VMHighAvailabilityPolicy:
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get VMHighAvailabilityPolicy \ --namespace vm-system --output yaml
Contoh output:
apiVersion: vm.cluster.gke.io/v1alpha1 kind: VMHighAvailabilityPolicy metadata: ... labels: app.kubernetes.io/component: kubevirt app.kubernetes.io/managed-by: virt-operator kubevirt.io: virt-api name: default namespace: vm-system .. spec: defaultRecoveryStrategy: Reschedule nodeHeartbeatInterval: 15s nodeMonitorGracePeriod: 1m30s
Mengubah strategi pemulihan default
Dalam situasi tertentu, sebaiknya Anda mengubah strategi pemulihan default. Misalnya, jika VM Anda menggunakan penyimpanan lokal atau sistem file yang tidak berbasis file jaringan, sebaiknya Anda mengubah nilai defaultRecoveryStrategy
menjadi Ignore
.
Untuk mengubah nilai defaultRecoveryStrategy
, buka objek
VMHighAvailabilityPolicy untuk diedit:
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG edit VMHighAvailabilityPolicy \ default --namespace vm-system
Di editor teks, ubah nilai defaultRecoveryStrategy
menjadi nilai
pilihan Anda: Reschedule
atau Ignore
. Tutup editor teks.
Mengganti strategi pemulihan default untuk VM
Strategi pemulihan default berlaku untuk semua VM yang berjalan di cluster. Namun, Anda mungkin perlu mengganti strategi pemulihan default untuk setiap VM.
Misalnya, anggaplah sebagian besar VM Anda disediakan dengan class penyimpanan berbasis file jaringan, tetapi beberapa VM disediakan dengan class penyimpanan berbasis blok. Untuk setiap VM yang menggunakan penyimpanan berbasis blok, sebaiknya Anda mengganti strategi pemulihan default dengan menetapkan strategi pemulihan untuk setiap VM ke Ignore
.
Untuk mengganti strategi pemulihan default VM, tambahkan anotasi vm.cluster.gke.io/vm-ha-recovery-strategy
ke objek VirtualMachineInstance (VMI) dan objek GVM.
Misalnya, perintah ini menetapkan strategi pemulihan ke Ignore
untuk VM
bernama my-vm
:
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG \ annotate vmi my-vm \ vm.cluster.gke.io/vm-ha-recovery-strategy=Ignore --overwrite kubectl --kubeconfig USER_CLUSTER_KUBECONFIG \ annotate gvm my-vm \ vm.cluster.gke.io/vm-ha-recovery-strategy=Ignore --overwrite
Jika Anda ingin menghapus anotasi nanti, gunakan tanda hubung di akhir nama anotasi. Contoh:
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG \ annotate vmi my-vm \ vm.cluster.gke.io/vm-ha-recovery-strategy- kubectl --kubeconfig USER_CLUSTER_KUBECONFIG \ annotate gvm my-vm \ vm.cluster.gke.io/vm-ha-recovery-strategy-
Konfigurasi lanjutan
Selain mengonfigurasi strategi pemulihan default, Anda dapat mengonfigurasi berikut:
Interval heartbeat node: Waktu antara heartbeat yang dikirim oleh setiap node cluster
Masa tenggang pemantauan node: Durasi maksimum node dapat gagal mengirim sinyal detak jantung sebelum dianggap tidak responsif
Dalam sebagian besar kasus, nilai default untuk interval detak jantung dan masa tenggang sudah sesuai. Namun, Anda dapat memilih untuk menyesuaikan nilai ini jika ingin menyempurnakan kompromi antara kecepatan pemulihan dan overhead. Interval detak jantung yang lebih pendek akan mempersingkat waktu pemulihan, tetapi juga akan meningkatkan overhead. Dalam cluster besar, Anda dapat memilih untuk memperpanjang interval detak jantung, karena detak jantung yang sering dari banyak node dapat membuat beban yang tidak dapat diterima pada server Kubernetes API.
Pertahankan interval detak jantung lebih rendah daripada masa tenggang untuk menghindari kasus ketika satu detak jantung yang terlewat menyebabkan node dianggap tidak sehat.
Jalankan kubectl edit
untuk membuka objek VMHighAvailabilityPolicy untuk diedit. Tetapkan
nodeHeartbeatInterval
dan nodeMonitorGracePeriod
ke nilai pilihan Anda.
spec: defaultRecoveryStrategy: Reschedule nodeHeartbeatInterval: 15s nodeMonitorGracePeriod: 1m30s