StatefulSet berisi sekumpulan Pod dengan identitas unik dan persisten serta hostname yang stabil. Template pod digunakan dalam Statefulset, yang berisi spesifikasi untuk podnya, pod dibuat menggunakan spesifikasi ini. Kita dapat men-deploy aplikasi stateful dan aplikasi cluster menggunakan Statefulsets di Kubernetes. StatefulSet dapat diperbarui dengan membuat perubahan pada spesifikasi Pod-nya, yang mencakup gambar dan volume container-nya.
StatefulSets dapat digunakan saat aplikasi memerlukan salah satu properti berikut.
- Pengidentifikasi jaringan unik yang stabil.
- Penyimpanan yang stabil dan persisten.
- Terurut, penerapan dan penskalaan yang anggun.
- Pembaruan bergulir yang dipesan dan otomatis.
Untuk StatefulSet dengan N replika, saat Pod di-deploy, Pod akan dibuat secara berurutan, dari {0..N-1}. Saat Pod dihapus, Pod akan dihentikan dalam urutan terbalik, dari {N-1..0}.
Untuk mengetahui lebih lanjut tentang Statefulset, klik di sini.
Dalam artikel ini, kita akan membuat Statefulset dengan replika pod Nginx. Kami akan melakukan operasi pada Pod untuk melihat bagaimana Pod dihapus dan dibuat.
Prasyarat
- Cluster Kubernetes dengan setidaknya 1 node pekerja.
Jika Anda ingin belajar membuat Cluster Kubernetes, klik di sini. Panduan ini akan membantu Anda membuat cluster Kubernetes dengan 1 Master dan 2 Node di Instans AWS Ubuntu 18l04 EC2.
Apa yang akan kita lakukan
- Buat Statefulset
Buat Statefulset
Buat file dan tambahkan definisi Statefulset berikut di dalamnya.
vim statefulset.yml
apiVersion: v1 kind: Service metadata: name: nginx labels: app: nginx spec: ports: - port: 80 name: web clusterIP: None selector: app: nginx --- apiVersion: apps/v1 kind: StatefulSet metadata: name: web spec: selector: matchLabels: app: nginx serviceName: "nginx" replicas: 3 template: metadata: labels: app: nginx spec: terminationGracePeriodSeconds: 10 containers: - name: nginx image: k8s.gcr.io/nginx-slim:0.8 ports: - containerPort: 80 name: web
Dalam contoh ini,
- Layanan Tanpa Kepala, bernama
nginx
, digunakan untuk mengontrol jaringan. - StatefulSet, bernama web, memiliki 3 replika container nginx yang akan diluncurkan di Pod unik.
- Gambar nginx dengan versi slim:0.8 digunakan untuk menerapkan Nginx.
Untuk membuat Statefulset, jalankan perintah berikut.
kubectl dapatkan statefulset
kubectl create -f statefulset.yml
Jalankan 2 perintah berikut untuk membuat daftar Statefulset dan Layanan yang dibuat pada langkah di atas.
kubectl dapatkan statefulset
kubectl dapatkan layanan
Dapatkan Pod menggunakan perintah berikut dan lihat Pod memiliki nomor sebagai Suffix dalam nama Pod.
kubectl dapatkan pod
Untuk mendapatkan detail lengkap dari Statefulset, jalankan perintah berikut.
kubectl dapatkan statefulset
kubectl mendeskripsikan web statefulset
Sekarang, mari kita hapus pod dan lihat bagaimana nama dipertahankan bahkan setelah pod baru dibuat.
Kami menghapus 2 pod untuk melihat nama apa yang akan diberikan ke pod baru setelah dibuat.
kubectl dapatkan pod
kubectl menghapus pod web-0 web-2
kubectl get pod
Pada tangkapan layar di atas Anda dapat melihat bahwa, bahkan setelah menghapus pod, pod yang baru dibuat akan mendapatkan nama yang sama.
Kesimpulan
Dalam artikel ini, kami membuat Statefulset dan melakukan operasi untuk memeriksa detailnya. Kami juga menghapus pod untuk melihat bagaimana nama pod dipertahankan dan hal yang sama diberikan ke pod yang baru dibuat setelah menghapusnya.