Mengonfigurasi kebijakan ketersediaan tinggi untuk VM

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