Dokumen ini menunjukkan cara mengonfigurasi kebijakan ketersediaan tinggi untuk virtual machine (VM) yang dijalankan menggunakan VM Runtime di GDC.
Jika Anda
mengaktifkan Runtime VM di GDC,
cluster membuat objek VMHighAvailabilityPolicy yang bernama default
. Ini
menentukan strategi pemulihan default jika ada node cluster yang
yang menjalankan VM gagal. Kemungkinan strategi pemulihan default adalah:
- Jadwal ulang: Menjadwalkan ulang VM di node cluster lain.
- Abaikan: Tidak melakukan apa pun.
Awalnya, strategi pemulihan default ditetapkan ke Reschedule
.
Strategi pemulihan default Reschedule
sesuai dalam hal berikut
situasi:
Cluster Anda memiliki setidaknya dua worker node.
Disk VM Anda disediakan menggunakan kelas penyimpanan berbasis file jaringan. Yaitu, kelas penyimpanan didasarkan pada sistem file jaringan yang mengoordinasikan POSIX kunci file di klien yang berbeda. Sistem File Jaringan (NFS) adalah contoh kelas penyimpanan berbasis file jaringan.
Jika VM Anda menggunakan penyimpanan
lokal atau sistem penyimpanan berbasis blok,
sebaiknya Anda menetapkan strategi pemulihan default ke Ignore
. Kami membuat
rekomendasi ini karena alasan berikut:
Jika VM Anda menggunakan penyimpanan lokal, dan node gagal, untuk memulihkan data yang disimpan dan memindahkannya ke {i>node<i} baru.
Jika VM Anda menggunakan sistem penyimpanan berbasis blok, penyimpanan mungkin tidak memiliki jaminan pelepasan yang memadai. Itu bisa mengarah pada akses {i>disk <i}secara 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 cluster pengguna Anda {i>kubeconfig<i}.
Output menunjukkan bahwa ada objek VMHighAvailabilityPolicy yang bernama
default
. Di {i>output<i}, Anda juga
dapat melihat nilai saat ini dari
defaultRecoveryStrategy
. Misalnya, {i>output<i} 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 setelan pemulihan default
strategi. Misalnya, jika VM Anda menggunakan penyimpanan
lokal atau sistem file yang
tidak berbasis file jaringan, maka sebaiknya Anda mengubah nilai
defaultRecoveryStrategy
hingga Ignore
.
Untuk mengubah nilai defaultRecoveryStrategy
, buka
Objek VMHighAvailabilityPolicy untuk pengeditan:
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 atau VM.
Sebagai contoh, anggaplah sebagian besar VM Anda dilengkapi dengan
berbasis file jaringan, tetapi beberapa VM dilengkapi dengan
berbasis blok storage. Untuk setiap VM yang menggunakan
penyimpanan berbasis blok, kita
sebaiknya Anda mengganti strategi pemulihan default dengan menyetel
strategi pemulihan untuk setiap VM ke Ignore
.
Untuk mengganti strategi pemulihan default untuk 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 di lain waktu, 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 ini:
Interval denyut jantung node: Waktu antar-detak{i> <i}yang dikirim oleh setiap cluster {i>node<i}
Masa tenggang pemantau node: Jumlah waktu maksimum node dapat gagal untuk kirim detak jantung sebelum dianggap tidak sehat
Dalam sebagian besar kasus, nilai default untuk interval detak jantung dan masa tenggang adalah yang sesuai. Namun, Anda dapat menyesuaikan nilai ini jika ingin untuk menyesuaikan kompromi antara kecepatan pemulihan dan {i>overhead<i}. Versi yang lebih singkat interval detak jantung akan mempersingkat waktu pemulihan, tetapi juga akan meningkatkan overhead. Dalam kelompok besar, Anda mungkin memilih untuk memperpanjang interval detak jantung, karena detak jantung yang sering dari banyak {i>node<i} dapat menimbulkan beban yang tidak dapat diterima pada Kubernetes API.
Pertahankan interval detak jantung lebih rendah dari masa tenggang untuk menghindari kasus di mana satu detak jantung yang terlewat menghasilkan suatu {i>node<i} yang dianggap tidak sehat.
Jalankan kubectl edit
guna membuka objek VMHighAvailabilityPolicy untuk diedit. Setel
nodeHeartbeatInterval
dan nodeMonitorGracePeriod
ke nilai pilihan Anda.
spec: defaultRecoveryStrategy: Reschedule nodeHeartbeatInterval: 15s nodeMonitorGracePeriod: 1m30s