Perbaikan Node Otomatis
Fitur perbaikan otomatis node terus memantau kondisi setiap node dalam kumpulan node. Jika node menjadi tidak responsif, fitur perbaikan otomatis node akan otomatis memperbaikinya. Fitur ini mengurangi kemungkinan pemadaman dan penurunan performa cluster, serta meminimalkan kebutuhan pemeliharaan cluster secara manual.
Anda dapat mengaktifkan perbaikan otomatis node saat membuat atau memperbarui kumpulan node. Perhatikan bahwa Anda mengaktifkan atau menonaktifkan fitur ini pada kumpulan node, bukan pada setiap node.
Kondisi node yang tidak responsif
Perbaikan otomatis node memeriksa status respons setiap node untuk menentukan apakah
memerlukan perbaikan. Node dianggap responsif jika melaporkan status Ready
.
Jika tidak, jika secara berturut-turut melaporkan status tidak responsif selama durasi
tertentu, reparasi akan dimulai.
Status tidak responsif dapat muncul dari status NotReady
, yang terdeteksi dalam pemeriksaan berturut-turut selama sekitar 15 menit. Selain itu, status yang tidak responsif dapat
disebabkan oleh kehabisan ruang boot disk, yang diidentifikasi selama
sekitar 30 menit.
Anda dapat memeriksa sinyal kondisi node secara manual kapan saja dengan menjalankan
perintah kubectl get nodes
.
Strategi perbaikan node
Perbaikan otomatis node mengikuti strategi tertentu untuk memastikan kondisi cluster secara keseluruhan dan ketersediaan aplikasi selama proses perbaikan. Bagian ini menjelaskan cara fitur perbaikan otomatis node memenuhi
konfigurasi PodDisruptionBudget
, mematuhi Pod Termination
Grace Period
, dan mengambil tindakan lain yang meminimalkan gangguan
cluster saat memperbaiki node.
Mematuhi PodDisruptionBudget
selama 30 menit
Jika memerlukan perbaikan, node tidak akan langsung dikosongkan dan dibuat ulang. Sebagai gantinya, fitur perbaikan otomatis node akan mematuhi konfigurasi PodDisruptionBudget (PDB) selama maksimal 30 menit, setelah itu semua Pod pada node akan dihapus. (Konfigurasi PDB menentukan, antara lain, jumlah minimum replika Pod tertentu yang harus tersedia pada waktu tertentu).
Dengan memenuhi PodDisruptionBudget
selama sekitar 30 menit, fitur
reparasi otomatis node memberikan jendela peluang bagi Pod untuk dijadwalkan ulang
dan didistribusikan ulang dengan aman ke seluruh node sehat lainnya di cluster. Hal ini
membantu mempertahankan tingkat ketersediaan aplikasi yang diinginkan selama proses
reparasi.
Setelah batas waktu 30 menit, perbaikan otomatis node akan melanjutkan proses
reparasi, meskipun berarti melanggar PodDisruptionBudget
. Tanpa batas
waktu, proses reparasi dapat terhenti tanpa batas waktu jika konfigurasi PodDisruptionBudget
mencegah penghapusan yang diperlukan untuk reparasi.
Mematuhi Masa Tenggang Penghentian Pod
Fitur perbaikan otomatis node juga mematuhi Masa Tenggang Penghentian Pod sekitar 30 menit. Masa Tenggang Penghentian Pod memberi Pod jangka waktu untuk penonaktifan tuntas selama penghentian. Selama masa tenggang, kubelet di Node bertanggung jawab untuk menjalankan tugas pembersihan dan mengosongkan resource yang terkait dengan Pod di Node tersebut. Fitur perbaikan otomatis node memungkinkan hingga 30 menit bagi kubelet untuk menyelesaikan pembersihan ini. Jika periode 30 menit yang dialokasikan telah berlalu, Node akan dipaksa untuk berhenti, terlepas dari apakah Pod telah dihentikan dengan baik atau tidak.
Strategi perbaikan node tambahan
Perbaikan otomatis node juga menerapkan strategi berikut:
- Jika beberapa node memerlukan perbaikan, node tersebut akan diperbaiki satu per satu untuk membatasi gangguan cluster dan melindungi workload.
- Jika Anda menonaktifkan perbaikan otomatis node selama proses reparasi, reparasi yang sedang berlangsung akan berlanjut hingga operasi reparasi berhasil atau gagal.
Cara mengaktifkan dan menonaktifkan perbaikan node otomatis
Anda dapat mengaktifkan atau menonaktifkan perbaikan otomatis node saat membuat atau memperbarui kumpulan node. Anda dapat mengaktifkan atau menonaktifkan fitur ini pada kumpulan node, bukan pada masing-masing node.
Aktifkan perbaikan otomatis untuk kumpulan node baru
gcloud container azure node-pools create NODE_POOL_NAME \
--cluster CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION \
--node-version 1.29.4-gke.200 \
--vm-size VM_SIZE \
--max-pods-per-node 110 \
--min-nodes MIN_NODES \
--max-nodes MAX_NODES \
--azure-availability-zone AZURE_ZONE \
--ssh-public-key SSH_PUBLIC_KEY" \
--subnet-id SUBNET_ID \
--enable-autorepair
Ganti kode berikut:
NODE_POOL_NAME
: nama unik untuk kumpulan node Anda — misalnya,node-pool-1
CLUSTER_NAME
: nama GKE Anda di cluster AzureGOOGLE_CLOUD_LOCATION
: lokasi Google Cloud yang mengelola cluster AndaNODE_VERSION
: versi Kubernetes yang akan diinstal pada setiap node dalam kumpulan node (mis., "1.29.4-gke.200")VM_SIZE
: ukuran VM Azure yang didukungMIN_NODES
: jumlah minimum node dalam kumpulan node — untuk mengetahui informasi selengkapnya, lihat Penskala otomatis clusterMAX_NODES
: jumlah maksimum node dalam kumpulan nodeAZURE_ZONE
: zona ketersediaan Azure tempat GKE di Azure meluncurkan node pool—misalnya,3
SSH_PUBLIC_KEY
: teks kunci publik SSH Anda.SUBNET_ID
:ID subnet kumpulan node.
Mengaktifkan perbaikan otomatis untuk kumpulan node yang ada
Untuk mengaktifkan perbaikan otomatis node pada kumpulan node yang ada, jalankan perintah berikut:
gcloud container azure node-pools update NODE_POOL_NAME \
--cluster CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION \
--enable-autorepair
Ganti kode berikut:
NODE_POOL_NAME
: nama unik untuk kumpulan node Anda — misalnya,node-pool-1
CLUSTER_NAME
: nama cluster AndaGOOGLE_CLOUD_LOCATION
: region Google Cloud yang mengelola cluster Anda
Menonaktifkan perbaikan otomatis untuk kumpulan node yang ada
gcloud container azure node-pools update NODE_POOL_NAME \
--cluster CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION \
--no-enable-autorepair
Ganti kode berikut:
NODE_POOL_NAME
: nama unik untuk kumpulan node Anda — misalnya,node-pool-1
CLUSTER_NAME
: nama cluster AndaGOOGLE_CLOUD_LOCATION
: region Google Cloud yang mengelola cluster Anda
Perhatikan bahwa GKE di Azure melakukan penonaktifan perbaikan otomatis node halus. Saat menonaktifkan perbaikan otomatis node untuk node pool yang ada, GKE di Azure meluncurkan operasi update node pool. Operasi tersebut akan menunggu perbaikan node yang ada untuk diselesaikan sebelum dilanjutkan.
Periksa apakah perbaikan otomatis node diaktifkan
Jalankan perintah berikut untuk memeriksa apakah perbaikan otomatis node diaktifkan atau tidak:
gcloud container azure node-pools describe NODE_POOL_NAME \
--cluster CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION
Ganti kode berikut:
NODE_POOL_NAME
: nama unik untuk kumpulan node Anda — misalnya,node-pool-1
CLUSTER_NAME
: nama cluster AndaGOOGLE_CLOUD_LOCATION
: region Google Cloud yang mengelola cluster Anda
Histori perbaikan node
Anda dapat melihat histori perbaikan yang dilakukan pada kumpulan node dengan menjalankan perintah berikut:
gcloud container azure operations list \
--location GOOGLE_CLOUD_LOCATION \
--filter="metadata.verb=repair AND metadata.target=projects/PROJECT_ID/locations/GOOGLE_CLOUD_LOCATION/azureClusters/CLUSTER_NAME/azureNodePools/NODEPOOL_NAME
Ganti kode berikut:
GOOGLE_CLOUD_LOCATION
: region Google Cloud yang didukung yang mengelola cluster Anda — misalnya,us-west1
PROJECT_ID
: proyek Google Cloud AndaCLUSTER_NAME
: nama cluster AndaNODE_POOL_NAME
: nama unik untuk kumpulan node Anda — misalnya,node-pool-1
Ringkasan kondisi kumpulan node
Setelah mengaktifkan perbaikan otomatis node, Anda dapat membuat ringkasan kondisi kumpulan node dengan menjalankan perintah berikut:
gcloud container azure node-pools describe NODE_POOL_NAME \
--cluster CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION
Ringkasan yang responsif dari kumpulan node terlihat mirip dengan contoh ini:
{ "name": "some-np-name", "version": "some-version", "state": "RUNNING", ... "errors": [ { "message": "1 node(s) is/are identified as unhealthy among 2 total node(s) in the node pool. No node is under repair." } ], }
Ringkasan kondisi kumpulan node membantu Anda memahami status kumpulan node saat ini. Dalam contoh ini, ringkasan berisi pesan error yang menyatakan bahwa salah satu dari dua node dalam kumpulan node tidak responsif. Laporan ini juga melaporkan bahwa tidak ada node yang saat ini menjalani proses reparasi.