Penonaktifan node yang benar di GKE di AWS

Mulai dari versi 1.26, GKE di AWS akan otomatis mengaktifkan Penghentian Tuntas Node. Fitur ini mengelola penghentian Pod yang tuntas selama penonaktifan node. Penghentian yang benar memungkinkan Pod menyimpan statusnya dan melepaskan resource sebelum node dimatikan. Metode penghentian Pod ini meminimalkan risiko kehilangan data. Tindakan 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, memicu penonaktifan node. Komponen kubelet mendeteksi peristiwa dan memulai proses penghentian node yang benar dengan menginstruksikan systemd untuk menunda penonaktifan sistem selama durasi yang ditentukan. Penundaan ini memberi node waktu untuk mengosongkan dan mengeluarkan Pod yang berjalan di node tersebut.

Tujuan penghentian node yang tuntas adalah untuk menghentikan Pod sistem penting dan non-sistem secara tuntas sebelum node dimatikan. Setelan default berikut digunakan:

  • ShutdownGracePeriod: 30 detik
  • ShutdownGracePeriodCriticalPods: 15 detik

Setelan ini memberi Pod non-sistem waktu 15 detik untuk melakukan penghentian tuntas 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 node tidak dapat dimatikan dengan benar dalam jangka waktu 30 detik yang ditentukan.

Pemicu dan batasan

Peristiwa yang memicu penonaktifan node yang benar mencakup peristiwa terencana seperti berikut:

  • Penonaktifan yang diperintahkan pengguna
  • Penghentian instance
  • Pemeliharaan terjadwal
  • Menurunkan skala cluster

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

Sebaliknya, penonaktifan node yang benar tidak dapat diaktifkan saat perintah penonaktifan tidak memicu mekanisme penguncian inhibitor systemd yang diandalkan oleh komponen kubelet. Contoh jenis situasi tersebut meliputi hal-hal berikut:

  • Koneksi jaringan terputus
  • Kerusakan hardware
  • Resource tidak mencukupi seperti memori atau CPU
  • Pemadaman listrik yang tidak terduga.

Dalam kasus ini, node dapat tiba-tiba dimatikan, sehingga berpotensi menyebabkan gangguan atau kehilangan data.