Mengonfigurasi kebijakan ketersediaan tinggi untuk VM

Dokumen ini menunjukkan cara mengonfigurasi kebijakan ketersediaan tinggi untuk virtual machine (VM) yang berjalan menggunakan Runtime VM di GDC.

Saat Anda mengaktifkan Runtime VM di GDC, cluster akan membuat objek VMHighAvailabilityPolicy bernama default. Objek ini menentukan strategi pemulihan default jika node cluster yang menjalankan VM gagal. Strategi pemulihan default yang memungkinkan adalah:

  • Penjadwalan ulang: Menjadwalkan ulang VM di node cluster lain.
  • Abaikan: Tidak melakukan apa pun.

Awalnya, strategi pemulihan default disetel ke Reschedule.

Strategi pemulihan default Reschedule sesuai dalam situasi berikut:

  • Cluster Anda memiliki minimal dua worker node.

  • Disk VM Anda disediakan menggunakan kelas penyimpanan berbasis file jaringan. Artinya, kelas penyimpanan didasarkan pada sistem file jaringan yang mengoordinasikan kunci file POSIX di berbagai klien. Network File System (NFS) adalah contoh kelas penyimpanan berbasis file jaringan.

Jika VM Anda menggunakan penyimpanan lokal atau sistem penyimpanan berbasis blok, sebaiknya tetapkan strategi pemulihan default ke Ignore. Kami membuat 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 tersebut dapat menyebabkan akses disk serentak dan kerusakan data selama penjadwalan VM.

Memeriksa objek VMHighAvailabilityPolicy

Verifikasi bahwa 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 dengan nama default. Dalam output, Anda juga dapat melihat nilai saat ini dari defaultRecoveryStrategy. 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 ubah nilai defaultRecoveryStrategy menjadi Ignore.

Untuk mengubah nilai defaultRecoveryStrategy, buka objek VMHighAvailabilityPolicy untuk mengedit:

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 kelas penyimpanan berbasis file jaringan, tetapi beberapa VM disediakan dengan kelas penyimpanan berbasis blok. Untuk setiap VM yang menggunakan penyimpanan berbasis blok, sebaiknya ganti strategi pemulihan default dengan menetapkan strategi pemulihan untuk setiap VM ke Ignore.

Guna 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 berikut 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 ingin menghapus anotasi pada 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 hal berikut:

  • Interval heartbeat node: Waktu antara detak jantung yang dikirim oleh setiap node cluster

  • Pemantauan node masa tenggang: Jumlah waktu maksimum node dapat gagal mengirim detak jantung sebelum dianggap tidak sehat

Pada umumnya, nilai default untuk interval detak jantung dan masa tenggang akan sesuai. Namun, Anda dapat memilih untuk menyesuaikan nilai ini jika ingin menyesuaikan keseimbangan 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 menyebabkan beban yang tidak dapat diterima pada server Kubernetes API.

Pertahankan interval detak jantung lebih rendah dari masa tenggang untuk menghindari kasus saat 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