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 detikShutdownGracePeriodCriticalPods
: 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.