Perbaikan node otomatis dan pemeriksaan kondisi

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

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

Pemeriksaan kondisi berkala dijalankan setiap lima belas menit. Pemeriksaan sama dengan yang dilakukan oleh gkectl diagnose cluster. Hasilnya ditampilkan sebagai log dan peristiwa pada objek Cluster di cluster admin.

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

Jika cluster lanjutan diaktifkan, health check berkala tidak dijalankan sebagai bagian dari perbaikan otomatis.

Kondisi node tidak sehat saat cluster lanjutan tidak diaktifkan

Kondisi berikut adalah indikasi bahwa node tidak sehat jika enableAdvanceCluster adalah false.

  • Kondisi node NotReady adalah true selama sekitar 10 menit.

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

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

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

  • Kondisi node DiskPressure adalah true selama sekitar 30 menit.

Kondisi node tidak sehat saat cluster lanjutan diaktifkan

Kondisi berikut adalah indikasi bahwa node tidak responsif saat enableAdvanceCluster adalah true.

  • Kondisi node NotReady adalah true 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 satu kondisi dalam daftar sebelumnya.

Perbaikan akan menguras node yang tidak sehat dan membuat VM baru. Jika pengurasan node tidak berhasil selama satu jam, perbaikan akan memaksa pengurasan dan melepaskan disk terkelola Kubernetes yang terpasang dengan aman.

Jika ada beberapa node yang tidak responsif dalam MachineDeployment yang sama, perbaikan dilakukan hanya pada salah satu node tersebut dalam satu waktu.

Jumlah perbaikan per jam untuk kumpulan node dibatasi hingga maksimum:

  • Tiga
  • Sepuluh persen dari jumlah node di node pool

Mengaktifkan perbaikan node dan pemeriksaan kondisi untuk cluster baru

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

autoRepair:
  enabled: true

Lanjutkan dengan langkah-langkah untuk membuat cluster admin atau pengguna.

Mengaktifkan perbaikan node dan pemeriksaan kondisi untuk cluster pengguna yang sudah ada

Di file konfigurasi cluster pengguna, tetapkan 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 pemeriksaan kondisi 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 file konfigurasi cluster admin Anda.

Melihat log dari pemeriksa kondisi

Mencantumkan semua Pod pemeriksa kondisi 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 pemeriksa kondisi 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 pemeriksa kondisi

Mencantumkan 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 untuk cluster tertentu, jalankan kubectl describe cluster dengan flag --show-events. Misalnya, untuk melihat peristiwa untuk my-user-cluster yang ditampilkan 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 pemeriksaan kondisi untuk cluster pengguna

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

Update cluster:

gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG

Menonaktifkan perbaikan node dan pemeriksaan kondisi 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

Men-debug perbaikan otomatis node saat cluster lanjutan tidak diaktifkan

Anda dapat menyelidiki masalah pada perbaikan otomatis node dengan menjelaskan objek Machine dan Node di cluster admin. Berikut contohnya:

Buat 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

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

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

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

Men-debug perbaikan otomatis node saat cluster lanjutan diaktifkan

Anda dapat menyelidiki masalah perbaikan otomatis node dengan menjelaskan objek Machine dan Node di cluster admin dan cluster yang sesuai. Berikut contohnya:

Buat daftar objek mesin:

kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG  get machines

Contoh output:

NAMESPACE                            NAME          NODEPOOL
ci-1f6861fe28cac8fb390bc798927c717b  10.251.172.47 ci-1f6861fe28cac8fb390bc798927c717b-np
ci-1f6861fe28cac8fb390bc798927c717b  10.251.173.64 ci-1f6861fe28cac8fb390bc798927c717b-cp
ci-1f6861fe28cac8fb390bc798927c717b  10.251.173.66 ci-1f6861fe28cac8fb390bc798927c717b-cp
ci-1f6861fe28cac8fb390bc798927c717b  10.251.174.19 ci-1f6861fe28cac8fb390bc798927c717b-np
ci-1f6861fe28cac8fb390bc798927c717b  10.251.175.15 ci-1f6861fe28cac8fb390bc798927c717b-np
ci-1f6861fe28cac8fb390bc798927c717b  10.251.175.30 ci-1f6861fe28cac8fb390bc798927c717b-cp
kube-system                          10.251.172.239   gke-admin-bnbp9-cp
kube-system                          10.251.173.39    gke-admin-bnbp9-cp
kube-system                          10.251.173.6     gke-admin-bnbp9-cp

Jelaskan mesin yang sesuai dengan objek Machine:

kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG describe machine -n ci-1f6861fe28cac8fb390bc798927c717b 10.251.172.47

Di output, cari peristiwa dari auto-repair-controller.

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

kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get nodes
...
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG describe node ci-1f6861fe28cac8fb390bc798927c717b-np

Perbaikan node manual saat cluster lanjutan tidak diaktifkan

Node bidang kontrol admin

Node bidang kontrol admin memiliki perintah perbaikan khusus, karena perbaikan manual biasa tidak berfungsi untuknya.

Gunakan gkectl repair admin-master untuk memperbaiki node bidang kontrol admin.

Node bidang kontrol cluster pengguna Controlplane V2

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

Mirip dengan cluster pengguna kubeception, objek Machine bidang kontrol dari cluster pengguna Controlplane V2 berada di cluster admin. Selain itu, perbaikan otomatis node dicakup oleh perbaikan otomatis node cluster admin.

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

  1. Dapatkan nama objek Machine yang sesuai dengan node:

    kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG -n USER_CLUSTER_NAME get machines
    

    Ganti kode berikut:

    • ADMIN_CLUSTER_KUBECONFIG: jalur file kubeconfig cluster admin Anda.
    • USER_CLUSTER_NAME: nama cluster pengguna target.
  2. Tambahkan anotasi repair ke objek Machine:

    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 objek Machine.

  3. Hapus objek Machine:

    kubectl delete --kubeconfig ADMIN_CLUSTER_KUBECONFIG -n USER_CLUSTER_NAME machine MACHINE_NAME
    

Buat ulang node satu per satu untuk bidang kontrol HA, atau bidang kontrol dapat berhenti berfungsi secara tidak terduga.

Node lainnya

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

Dapatkan nama objek Machine yang sesuai dengan node:

kubectl --kubeconfig CLUSTER_KUBECONFIG get machines

Ganti CLUSTER_KUBECONFIG dengan jalur file kubeconfig cluster admin atau pengguna Anda.

Tambahkan anotasi repair ke objek Machine:

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

Ganti MACHINE_NAME dengan nama objek Machine.

Hapus objek Machine:

kubectl delete --kubeconfig CLUSTER_KUBECONFIG machine MACHINE_NAME

Perbaikan node manual saat cluster lanjutan diaktifkan

Node bidang kontrol admin

Perbaikan manual node bidang kontrol admin tidak didukung

Node bidang kontrol cluster pengguna / Worker Node

Dapatkan nama objek Inventory Machine yang sesuai dengan node menggunakan IP node untuk mencocokkan objek:

kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG -n USER_CLUSTER_NAME get inventorymachines

Ganti kode berikut: ADMIN_CLUSTER_KUBECONFIG: jalur file kubeconfig admin Anda. USER_CLUSTER_NAME: nama cluster pengguna target.

Tambahkan anotasi force-remove ke objek Inventory Machine:

kubectl annotate --kubeconfig ADMIN_CLUSTER_KUBECONFIG -n USER_CLUSTER_NAME inventorymachine MACHINE_NAME baremetal.cluster.gke.io/force-remove=true

Ganti MACHINE_NAME dengan nama objek Machine.

Hapus objek Inventory Machine:

kubectl delete --kubeconfig ADMIN_CLUSTER_KUBECONFIG -n USER_CLUSTER_NAME inventorymachine MACHINE_NAME

Buat ulang node satu per satu untuk bidang kontrol HA, atau bidang kontrol dapat berhenti berfungsi secara tidak terduga.