Perbaikan Node Otomatis
Fitur perbaikan node otomatis terus memantau kondisi setiap node di node pool. Jika node menjadi tidak responsif, fitur perbaikan node otomatis akan memperbaikinya secara otomatis. Fitur ini mengurangi kemungkinan gangguan cluster dan penurunan performa, serta meminimalkan kebutuhan pemeliharaan cluster secara manual.
Anda dapat mengaktifkan perbaikan node otomatis saat membuat atau mengupdate node pool. Perhatikan bahwa Anda mengaktifkan atau menonaktifkan fitur ini di node pool, bukan di node individual.
Kondisi node yang tidak responsif
Perbaikan node otomatis memeriksa status kondisi setiap node untuk menentukan apakah node tersebut memerlukan perbaikan. Node dianggap responsif jika melaporkan status Ready.
Jika tidak, perbaikan akan dimulai jika node melaporkan status tidak responsif secara berturut-turut selama durasi tertentu.
Status tidak responsif dapat muncul dari status NotReady, yang terdeteksi dalam pemeriksaan berturut-turut selama sekitar 15 menit. Atau, status tidak responsif dapat disebabkan oleh ruang boot disk yang habis, yang teridentifikasi selama periode sekitar 30 menit.
Anda dapat memeriksa sinyal kondisi node secara manual kapan saja dengan menjalankan perintah kubectl get nodes.
Strategi perbaikan node
Perbaikan node otomatis mengikuti strategi tertentu untuk memastikan kondisi cluster secara keseluruhan dan ketersediaan aplikasi selama proses perbaikan. Bagian ini menjelaskan cara fitur perbaikan node otomatis mematuhi
PodDisruptionBudget konfigurasi, mematuhi Pod Termination
Grace Period, dan mengambil tindakan lain yang meminimalkan gangguan cluster
saat memperbaiki node.
Mematuhi PodDisruptionBudget selama 30 menit
Jika node memerlukan perbaikan, node tersebut tidak akan langsung dikosongkan dan dibuat ulang. Sebagai gantinya, fitur perbaikan node otomatis mematuhi konfigurasi PodDisruptionBudget (PDB) hingga 30 menit, setelah itu semua Pod di node akan dihapus. (Konfigurasi PDB menentukan, antara lain, jumlah minimum replika Pod tertentu yang harus tersedia kapan saja).
Dengan mematuhi PodDisruptionBudget selama sekitar 30 menit, fitur perbaikan node otomatis memberikan peluang bagi Pod untuk dijadwalkan ulang dan didistribusikan kembali dengan aman ke node lain yang responsif di cluster. Hal ini membantu mempertahankan tingkat ketersediaan aplikasi yang diinginkan selama proses perbaikan.
Setelah batas waktu 30 menit, perbaikan node otomatis akan melanjutkan proses perbaikan, meskipun hal ini berarti melanggar PodDisruptionBudget. Tanpa batas waktu, proses perbaikan dapat terhenti tanpa batas jika konfigurasi PodDisruptionBudget mencegah pengosongan yang diperlukan untuk perbaikan.
Mematuhi Pod Termination Grace Period
Fitur perbaikan node otomatis juga mematuhi Pod Termination Grace Period selama sekitar 30 menit. Pod Termination Grace Period memberi Pod jangka waktu untuk penghentian normal 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 node otomatis memungkinkan kubelet menyelesaikan pembersihan ini hingga 30 menit. Jika 30 menit yang dialokasikan telah berlalu, Node akan dipaksa dihentikan, terlepas dari apakah Pod telah dihentikan dengan tuntas.
Strategi perbaikan node tambahan
Perbaikan node otomatis 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 node otomatis selama proses perbaikan, perbaikan yang sedang berlangsung akan tetap dilanjutkan hingga operasi perbaikan berhasil atau gagal.
Cara mengaktifkan dan menonaktifkan perbaikan node otomatis
Anda dapat mengaktifkan atau menonaktifkan perbaikan node otomatis saat membuat atau mengupdate node pool. Anda mengaktifkan atau menonaktifkan fitur ini di node pool, bukan di node individual.
Mengaktifkan perbaikan otomatis untuk node pool baru
gcloud container azure node-pools create NODE_POOL_NAME \
--cluster CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION \
--node-version 1.35.3-gke.300 \
--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 node pool Anda — misalnya,node-pool-1CLUSTER_NAME: nama cluster GKE di Azure AndaGOOGLE_CLOUD_LOCATION: lokasi Google Cloud yang mengelola cluster AndaNODE_VERSION: versi Kubernetes yang akan diinstal di setiap node dalam node pool (misalnya, "1.35.3-gke.300")VM_SIZE: ukuran VM Azure yang didukungMIN_NODES: jumlah minimum node dalam node pool — untuk mengetahui informasi selengkapnya, lihat Autoscaler clusterMAX_NODES: jumlah maksimum node dalam node poolAZURE_ZONE: zona ketersediaan Azure tempat GKE di Azure meluncurkan node pool — misalnya,3SSH_PUBLIC_KEY: teks kunci publik SSH Anda.SUBNET_ID:ID subnet node pool.
Mengaktifkan perbaikan otomatis untuk node pool yang sudah ada
Untuk mengaktifkan perbaikan node otomatis di node pool yang sudah 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 node pool Anda — misalnya,node-pool-1CLUSTER_NAME: nama cluster AndaGOOGLE_CLOUD_LOCATION: region yang Google Cloud mengelola cluster Anda
Menonaktifkan perbaikan otomatis untuk node pool yang sudah 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 node pool Anda — misalnya,node-pool-1CLUSTER_NAME: nama cluster AndaGOOGLE_CLOUD_LOCATION: region yang Google Cloud mengelola cluster Anda
Perhatikan bahwa GKE di Azure melakukan penonaktifan perbaikan node otomatis yang tuntas. Saat menonaktifkan perbaikan node otomatis untuk node pool yang sudah ada, GKE di Azure akan meluncurkan operasi node pool update. Operasi ini menunggu perbaikan node yang ada selesai sebelum dilanjutkan.
Memeriksa apakah perbaikan node otomatis diaktifkan
Jalankan perintah berikut untuk memeriksa apakah perbaikan node otomatis 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 node pool Anda — misalnya,node-pool-1CLUSTER_NAME: nama cluster AndaGOOGLE_CLOUD_LOCATION: region yang Google Cloud mengelola cluster Anda
Histori perbaikan node
Anda dapat melihat histori perbaikan yang dilakukan pada node pool 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 yang didukung yang mengelola cluster Anda — misalnya,us-west1Google CloudPROJECT_ID: project Anda Google CloudCLUSTER_NAME: nama cluster AndaNODE_POOL_NAME: nama unik untuk node pool Anda — misalnya,node-pool-1
Ringkasan kondisi node pool
Setelah mengaktifkan perbaikan node otomatis, Anda dapat membuat ringkasan kondisi node pool dengan menjalankan perintah berikut:
gcloud container azure node-pools describe NODE_POOL_NAME \
--cluster CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION
Ringkasan kondisi node pool yang responsif 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 node pool membantu Anda memahami status node pool saat ini. Dalam contoh ini, ringkasan berisi pesan error yang menyatakan bahwa salah satu dari dua node di node pool tidak responsif. Ringkasan ini juga melaporkan bahwa saat ini tidak ada node yang sedang menjalani proses perbaikan.