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-1
  • CLUSTER_NAME: nama cluster GKE di Azure Anda
  • GOOGLE_CLOUD_LOCATION: lokasi Google Cloud yang mengelola cluster Anda
  • NODE_VERSION: versi Kubernetes yang akan diinstal di setiap node dalam node pool (misalnya, "1.35.3-gke.300")
  • VM_SIZE: ukuran VM Azure yang didukung
  • MIN_NODES: jumlah minimum node dalam node pool — untuk mengetahui informasi selengkapnya, lihat Autoscaler cluster
  • MAX_NODES: jumlah maksimum node dalam node pool
  • AZURE_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 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-1
  • CLUSTER_NAME: nama cluster Anda
  • GOOGLE_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-1
  • CLUSTER_NAME: nama cluster Anda
  • GOOGLE_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-1
  • CLUSTER_NAME: nama cluster Anda
  • GOOGLE_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:

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.