Health check dan perbaikan node otomatis

Di Google Distributed Cloud, health check berkala dan node otomatis reparasi diaktifkan secara default.

Fitur perbaikan otomatis node terus mendeteksi dan memperbaiki node yang tidak responsif di cluster.

Health check berkala berjalan setiap lima belas menit. Pemeriksaan tersebut sama dengan yang dibawakan oleh gkectl diagnose cluster. Hasilnya ditampilkan sebagai log dan peristiwa pada objek Cluster di cluster admin.

Pastikan bahwa admin dan cluster pengguna Anda masing-masing memiliki alamat IP tambahan yang tersedia untuk perbaikan node otomatis.

Kondisi node yang tidak responsif

Kondisi berikut merupakan indikasi bahwa node tidak responsif:

  • Kondisi node NotReady adalah true selama sekitar 10 menit.

  • Status mesin adalah Unavailable selama sekitar 10 menit setelah pembuatan konten berhasil.

  • Status mesin tidak Available selama sekitar 30 menit setelah VM pembuatan konten.

  • Tidak ada objek node (nodeRef adalah nil) yang sesuai dengan mesin di status Available selama sekitar 10 menit.

  • Kondisi node DiskPressure adalah true selama sekitar 30 menit.

Strategi perbaikan node

Google Distributed Cloud memulai perbaikan pada node jika node memenuhi setidaknya salah satu kondisi dalam daftar sebelumnya.

Perbaikan ini menghabiskan node yang tidak responsif dan membuat VM baru. Jika node menghabiskan tidak berhasil selama satu jam, perbaikan akan memaksa saluran keluar dan melepaskan disk terkelola Kubernetes terpasang.

Jika ada beberapa node yang tidak responsif di MachineDeployment yang sama, perbaikan hanya dilakukan pada salah satu {i>node<i} tersebut pada satu waktu.

Jumlah reparasi per jam untuk kumpulan node dibatasi hingga maksimum:

  • Tiga
  • Sepuluh persen dari jumlah node dalam kumpulan node

Mengaktifkan perbaikan node dan health check untuk cluster baru

Di admin atau pengguna file konfigurasi cluster, tetapkan autoRepair.enabled ke true:

autoRepair:
  enabled: true

Lanjutkan ke langkah-langkah untuk membuat admin atau pengguna .

Mengaktifkan perbaikan node dan health check untuk cluster pengguna yang ada

Di file konfigurasi cluster pengguna, setel autoRepair.enabled ke true:

Update cluster:

gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG

Ganti kode berikut:

  • ADMIN_CLUSTER_KUBECONFIG: jalur file kubeconfig cluster admin Anda

  • USER_CLUSTER_CONFIG: jalur file konfigurasi cluster pengguna Anda

Mengaktifkan perbaikan node dan health check untuk cluster admin yang ada

Di file konfigurasi cluster admin, tetapkan autoRepair.enabled ke true:

Update cluster:

gkectl update admin --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config ADMIN_CLUSTER_CONFIG

Ganti ADMIN_CLUSTER_CONFIG dengan jalur cluster admin Anda file konfigurasi Anda.

Melihat log dari health checker

Tampilkan daftar semua Pod health checker di cluster admin:

kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get pods --all-namespaces | grep cluster-health-controller

Outputnya mirip dengan ini:

kube-system       cluster-health-controller-6c7df455cf-zlfh7   2/2   Running
my-user-cluster   cluster-health-controller-5d5545bb75-rtz7c   2/2   Running

Untuk melihat log dari health checker tertentu, dapatkan log untuk Container cluster-health-controller di salah satu Pod. Misalnya, untuk mendapatkan log untuk my-user-cluster yang ditampilkan dalam output sebelumnya:

kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG --namespace my-user-cluster logs \
    cluster-health-controller-5d5545bb75-rtz7c cluster-health-controller

Melihat peristiwa dari health checker

Tampilkan daftar semua objek Cluster di cluster admin Anda:

kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get clusters --all-namespaces

Outputnya mirip dengan ini:

default            gke-admin-ldxh7   2d15h
my-user-cluster    my-user-cluster   2d12h

Untuk melihat peristiwa pada cluster tertentu, jalankan kubectl describe cluster dengan flag --show-events. Misalnya, untuk melihat peristiwa untuk my-user-cluster ditunjukkan dalam output sebelumnya:

kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG --namespace my-user-cluster \
    describe --show-events cluster my-user-cluster

Contoh output:

Events:
  Type     Reason             Age   From                                 Message
  ----     ------             ----  ----                                 -------
  Warning  ValidationFailure  17s   cluster-health-periodics-controller  validator for Pod returned with status: FAILURE, reason: 1 pod error(s).

Menonaktifkan perbaikan node dan health check untuk cluster pengguna

Di file konfigurasi cluster pengguna, setel autoRepair.enabled ke false:

Update cluster:

gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG

Menonaktifkan perbaikan node dan health check untuk cluster admin

Di file konfigurasi cluster admin, tetapkan autoRepair.enabled ke false:

Update cluster:

gkectl update admin --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config ADMIN_CLUSTER_CONFIG

Melakukan debug perbaikan otomatis node

Anda dapat menyelidiki masalah terkait perbaikan otomatis node dengan menjelaskan Mesin dan Objek node di cluster admin. Berikut contohnya:

Tampilkan daftar objek mesin:

kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG  get machines

Contoh output:

default     gke-admin-master-wcbrj
default     gke-admin-node-7458969ff8-5cg8d
default     gke-admin-node-7458969ff8-svqj7
default     xxxxxx-user-cluster-41-25j8d-567f9c848f-fwjqt

Jelaskan salah satu objek Machine:

kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG describe machine gke-admin-master-wcbrj

Pada output, cari peristiwa dari cluster-health-controller.

Demikian pula, Anda dapat mencantumkan dan menjelaskan objek node. Contoh:

kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get nodes
...
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG describe node gke-admin-master-wcbrj

Perbaikan node manual

Node bidang kontrol admin

Node bidang kontrol admin memiliki perintah perbaikan khusus, karena perbaikan manual tidak bisa dilakukan.

Gunakan gkectl repair admin-master untuk memperbaiki admin {i>node<i} bidang kontrol.

Node bidang kontrol cluster pengguna Controlplane V2

Node bidang kontrol cluster pengguna Controlplane V2 dikelola secara berbeda dari node lain.

Mirip dengan cluster pengguna kubeception, bidang kontrol objek Machine dari Controlplane Cluster pengguna V2 berada di cluster admin. Perbaikan otomatis node tercakup oleh perbaikan otomatis node cluster admin.

Jika ada masalah node yang tidak tercakup oleh logika perbaikan otomatis node cluster admin, atau belum mengaktifkan perbaikan otomatis node cluster admin, Anda dapat melakukan perbaikan manual. Ini menghapus dan membuat ulang node.

  1. Dapatkan nama objek Mesin yang sesuai dengan node:

    kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG -n USER_CLUSTER_NAME get machines
    

    Ganti kode berikut:

    • ADMIN_CLUSTER_KUBECONFIG: jalur admin Anda {i>kubeconfig<i}.
    • USER_CLUSTER_NAME: nama cluster pengguna target.
  2. Tambahkan anotasi repair ke objek Mesin:

    kubectl annotate --kubeconfig ADMIN_CLUSTER_KUBECONFIG -n USER_CLUSTER_NAME machine MACHINE_NAME onprem.cluster.gke.io/repair-machine=true
    

    Ganti MACHINE_NAME dengan nama Mesin .

  3. Hapus objek Mesin:

    kubectl delete --kubeconfig ADMIN_CLUSTER_KUBECONFIG -n USER_CLUSTER_NAME machine MACHINE_NAME
    

Buat ulang node satu per satu untuk bidang kontrol HA. Jika tidak, node akan menurunkan bidang kontrol secara tiba-tiba.

Node lainnya

Jika ada masalah {i>node<i} yang tidak tercakup oleh logika perbaikan otomatis, atau belum mengaktifkan perbaikan otomatis node, Anda dapat melakukan reparasi manual. Ini menghapus dan membuat ulang node.

Dapatkan nama objek Mesin yang sesuai dengan node:

kubectl --kubeconfig CLUSTER_KUBECONFIG get machines

Ganti CLUSTER_KUBECONFIG dengan jalur admin atau cluster pengguna Anda {i>kubeconfig<i}.

Tambahkan anotasi repair ke objek Mesin:

kubectl annotate --kubeconfig CLUSTER_KUBECONFIG machine MACHINE_NAME onprem.cluster.gke.io/repair-machine=true

Ganti MACHINE_NAME dengan nama objek Mesin.

Hapus objek Mesin:

kubectl delete --kubeconfig CLUSTER_KUBECONFIG machine MACHINE_NAME