Penonaktifan node tuntas di GKE di Azure

Mulai versi 1.26, GKE di Azure otomatis mengaktifkan Penonaktifan Graceful Node. Fitur ini mengelola penghentian Pod secara halus selama penonaktifan node. Penghentian tuntas memungkinkan Pod menyimpan statusnya, dan melepaskan resource sebelum node dinonaktifkan. Metode penghentian Pod ini meminimalkan risiko kehilangan data. Hal ini juga meminimalkan risiko gangguan pada Pod dan layanan lain yang mengandalkan atau berinteraksi dengan Pod yang dimatikan, sehingga meningkatkan ketahanan cluster Anda.

Cara kerjanya

Peristiwa seperti pemeliharaan terjadwal, penskalaan node, atau masalah hardware, akan memicu penonaktifan node. Komponen kubelet mendeteksi peristiwa dan memulai proses penghentian node tuntas dengan menginstruksikan systemd untuk menunda penonaktifan sistem selama durasi yang ditentukan. Penundaan ini memberi node waktu untuk menguras dan mengeluarkan Pod yang berjalan di atasnya.

Tujuan penghentian node halus adalah untuk menghentikan Pod sistem dan non-sistem penting dengan baik sebelum node dimatikan. Setelan default berikut digunakan:

  • ShutdownGracePeriod: 30 detik
  • ShutdownGracePeriodCriticalPods: 15 detik

Setelan ini memberikan waktu 15 detik kepada Pod non-sistem untuk berhenti dengan baik sebelum dihentikan secara paksa. Pod sistem penting memiliki waktu 15 detik untuk dimatikan setelah Pod non-sistem dihentikan. Namun, karena fitur ini beroperasi berdasarkan upaya terbaik, ada kemungkinan bahwa node mungkin tidak dapat dinonaktifkan dengan baik dalam periode 30 detik yang ditentukan.

Pemicu dan batasan

Peristiwa yang memicu penonaktifan node halus mencakup peristiwa yang direncanakan seperti berikut:

  • Penonaktifan atas perintah pengguna
  • Penghentian instance
  • Pemeliharaan terjadwal
  • Menurunkan skala cluster

Dalam skenario ini, kubelet mendeteksi peristiwa penonaktifan node dan memulai proses penonaktifan node halus.

Sebaliknya, penonaktifan node halus tidak dapat diaktifkan saat perintah penonaktifan tidak memicu mekanisme kunci inhibitor systemd yang diandalkan oleh komponen kubelet. Contoh situasi semacam ini mencakup sebagai berikut:

  • Pemutusan jaringan
  • Hardware bermasalah
  • Sumber daya tidak mencukupi seperti memori atau CPU
  • Pemadaman listrik yang tidak terduga.

Dalam kasus ini, node mungkin mati secara tiba-tiba, yang berpotensi menyebabkan gangguan atau kehilangan data.