Tentang StatefulSet di GKE


Halaman ini menjelaskan penggunaan objek StatefulSet di Google Kubernetes Engine (GKE). Anda juga dapat mempelajari cara Men-deploy aplikasi stateful.

Tentang StatefulSet

StatefulSet mewakili sekumpulan Pod dengan identitas yang unik dan persisten, serta nama host yang stabil dan dipertahankan oleh GKE, terlepas dari tempatnya dijadwalkan. Informasi status dan data tangguh lainnya untuk setiap Pod StatefulSet tertentu dipertahankan dalam volume persisten yang terkait dengan setiap Pod di StatefulSet. Pod StatefulSet dapat dimulai ulang kapan saja.

Untuk aplikasi stateless, gunakan Deployment.

StatefulSet berfungsi dengan cara yang sama di GKE dan di Kubernetes. Dokumen ini menjelaskan pertimbangan khusus GKE. Untuk mempelajari cara kerja StatefulSet, lihat dokumentasi Kubernetes tentang StatefulSet.

Merencanakan jaringan untuk StatefulSet

StatefulSet menyediakan penyimpanan persisten dalam bentuk PersistentVolume dan identitas jaringan (nama host) yang unik. Tabel berikut menyertakan peringatan yang harus diperhatikan operator aplikasi saat mengonfigurasi StatefulSet:

Peringatan jaringan Deskripsi Praktik terbaik
Service GKE, bukan alamat IP tetap

Meskipun replika Pod memiliki indeks ordinal yang unik, mendukung volume per replika, dan identitas jaringan (nama host), alamat IP yang ditetapkan ke replika dapat berubah jika GKE menjadwalkan ulang atau mengeluarkan Pod.

Untuk mengurangi masalah jaringan, arsitektur harus menggunakan resource Service Kubernetes. Untuk informasi selengkapnya, lihat Jenis Service Kubernetes.

Service Headless

Saat diinisialisasi, StatefulSet akan dipasangkan dengan layanan headless yang cocok.

Pastikan `metadata.name` di Service Anda cocok dengan kolom serviceName di StatefulSet. Hal ini memungkinkan setiap Pod dalam aplikasi Anda ditangani di alamat jaringan yang unik dan ditentukan dengan baik. Selain itu, layanan headless menyediakan data multi-IP untuk setiap replika di StatefulSet, sehingga memungkinkan penemuan peer lengkap.

Penemuan peer

Aplikasi stateful memerlukan jumlah minimum (kuorum) replika agar dapat berfungsi dengan ketersediaan penuh.

Karena Pod dapat mengalami error, dijadwalkan ulang, atau dikeluarkan, setiap replika di StatefulSet harus dapat keluar dan bergabung kembali ke kuorum. Aplikasi yang memerlukan peering harus memiliki kemampuan untuk menemukan peer lain melalui Service headless di Kubernetes.

Health check berdasarkan pemeriksaan kesiapan dan pemeriksaan keaktifan

Aplikasi Anda harus memiliki pemeriksaan kesiapan, keaktifan, dan proses mulai sistem yang dikonfigurasi dengan benar, jika memungkinkan. Memilih waktu tunggu untuk setiap pemeriksaan bergantung pada persyaratan aplikasi Anda.

Untuk pemeriksaan kesiapan, ikuti praktik terbaik berikut guna mengonfigurasi aplikasi Anda untuk menandai kesiapan saat aplikasi siap menyalurkan traffic:

  • Pemeriksaan keaktifan: Anda dapat menggunakan pemeriksaan keaktifan untuk memberi sinyal apakah container responsif atau tidak. Misalnya, replika database dapat menggunakan pemeriksaan keaktifan untuk menunjukkan bahwa GKE harus memulai ulang replika, seperti kondisi deadlock
  • Pemeriksaan kesiapan: Anda dapat menggunakan pemeriksaan kesiapan untuk menghapus replika agar tidak menyalurkan traffic untuk sementara waktu. Misalnya, jika memiliki replika database yang perlu melakukan pencadangan, Anda dapat menggunakan pemeriksaan kesiapan untuk berhenti menerima permintaan secara sementara.
  • Pemeriksaan proses mulai sistem: Anda dapat menggunakan pemeriksaan proses mulai sistem untuk menunda health check hingga inisialisasi yang berjalan lama selesai dilakukan. Misalnya, jika memiliki replika database, Anda dapat menggunakan pemeriksaan proses mulai sistem untuk menunggu inisialisasi data yang disimpan dari disk.

Untuk membaca pemeriksaan lebih lanjut, lihat Mengonfigurasi Pemeriksaan Keaktifan, Kesiapan, dan Proses Mulai Sistem.

Menggunakan StatefulSet

Untuk mempelajari cara men-deploy StatefulSet di cluster GKE dan berinteraksi dengannya, lihat dokumentasi Kubernetes tentang dasar-dasar StatefulSet.

Langkah selanjutnya