Skip to content

emka.web.id

menulis pengetahuan – merekam peradaban

Menu
  • Home
  • Tutorial
  • Search
Menu

Apa Itu StatefulSet Kubernetes? Kapan Anda Harus Menggunakannya?

Posted on October 5, 2022

StatefulSets adalah objek Kubernetes yang digunakan untuk secara konsisten menerapkan komponen aplikasi stateful. Pod yang dibuat sebagai bagian dari StatefulSet diberikan pengenal persisten yang mereka simpan bahkan ketika dijadwal ulang.

A StatefulSet dapat men-deploy aplikasi yang perlu mengidentifikasi replika tertentu secara andal, meluncurkan pembaruan dalam urutan yang telah ditentukan sebelumnya, atau mengakses volume penyimpanan secara stabil. Mereka berlaku untuk banyak kasus penggunaan yang berbeda tetapi paling sering digunakan untuk database dan jenis penyimpanan data persisten lainnya.

Dalam artikel ini Anda akan mempelajari apa itu StatefulSet, cara kerjanya, dan kapan Anda harus menggunakannya. Kami juga akan membahas batasannya dan situasi di mana objek Kubernetes lain adalah pilihan yang lebih baik.

Apa Itu StatefulSets?

Membuat Pod sebagai bagian dari StatefulSet menginstruksikan Kubernetes untuk menjadwalkan dan menskalakannya dengan cara yang terjamin. Setiap Pod mendapat alokasi identitas unik yang dipertahankan oleh setiap Pod pengganti.

Nama Pod diberi akhiran dengan indeks ordinal yang menentukan urutannya selama operasi penjadwalan. StatefulSet yang disebut mysql yang berisi tiga replika akan membuat Pods bernama berikut:

mysql-1mysql-2mysql-3

Pods menggunakan nama mereka sebagai nama host mereka sehingga layanan lain yang perlu mengakses replika kedua StatefulSet dengan andal dapat terhubung ke mysql-2. Bahkan jika Pod tertentu yang menjalankan mysql-2 dijadwal ulang nanti, identitasnya akan diteruskan ke penggantinya.

StatefulSets juga memberlakukan bahwa Pod dihapus dalam urutan terbalik dari pembuatannya. Jika StatefulSet diperkecil menjadi satu replika, mysql-3 dijamin akan keluar terlebih dahulu, diikuti oleh mysql-2. Perilaku ini tidak berlaku ketika seluruh StatefulSet dihapus dan dapat dinonaktifkan dengan menyetel field podManagementPolicy StatefulSet ke Parallel.

StatefulSet Use Cases

StatefulSets biasanya digunakan untuk menjalankan aplikasi yang direplikasi di mana setiap Pod memiliki peran yang berbeda. Sebagai contoh, Anda dapat menerapkan database MySQL dengan instance utama dan dua replika hanya-baca. ReplicaSet atau Deployment biasa tidak akan sesuai karena Anda tidak dapat mengidentifikasi Pod yang menjalankan replika utama dengan andal.

StatefulSets mengatasi hal ini dengan menjamin bahwa setiap Pod di ReplicaSet mempertahankan identitasnya. Layanan Anda yang lain dapat dengan andal terhubung ke mysql-1 untuk berinteraksi dengan replika utama. ReplicaSets juga memberlakukan bahwa Pod baru hanya dimulai ketika Pod sebelumnya sedang berjalan. Ini memastikan replika read-only dibuat setelah primer selesai dan siap untuk mengekspos datanya.

Tujuan StatefulSets adalah untuk mengakomodasi replika yang tidak dapat dipertukarkan di dalam Kubernetes. Sementara Pod dalam aplikasi stateless setara satu sama lain, beban kerja stateful memerlukan pendekatan yang disengaja untuk peluncuran, penskalaan, dan penghentian.

StatefulSets terintegrasi dengan volume persisten lokal untuk mendukung penyimpanan persisten yang melekat pada setiap replika. Setiap Pod mendapatkan akses ke volumenya sendiri yang akan secara otomatis disambungkan kembali ketika replika dijadwal ulang ke node lain.

Membuat StatefulSet

Berikut adalah contoh manifes YAML yang mendefinisikan set stateful untuk menjalankan MySQL dengan node utama dan dua replika:

apiVersion: v1 kind: Service metadata: nama: mysql label: aplikasi: mysql spesifikasi: port: – nama: mysql port: 3306 clusterIP: Tidak ada pemilih: aplikasi: mysql — apiVersion: apps/v1 jenis: StatefulSet metadata: nama: mysql spesifikasi: pemilih: matchLabels : app: mysql serviceName: mysql replika: 3 template: metadata: label: app: mysql spec: initContainers: – nama: mysql-init image: mysql:8.0 perintah: – bash – “-c” – | set -ex [[ `hostname` =~ -([0-9]+)$ ]] || exit 1 ordinal=${BASH_REMATCH[1]} echo [mysqld] > /mnt/conf/server-id.cnf # MySQL tidak mengizinkan “0” sebagai `server-id` jadi kita harus menambahkan 1 ke Indeks Pod echo server-id=$((1 + $ordinal)) >> /mnt/conf/server-id.cnf if [[ $ordinal -eq 0 ]]; lalu printf “[mysqld]nlog-bin”> /mnt/conf/primary.cnf else printf “[mysqld]nsuper-read-only” /mnt/conf/replica.cnf fi volumeMounts: – nama: config mountPath: /mnt/conf container: – nama: mysql gambar: mysql:8.0 env: – nama: MYSQL_ALLOW_EMPTY_PASSWORD nilai: “1” port: – nama: mysql containerPort: 3306 volumeMounts: – nama: config mountPath: /etc/mysql/conf. d – nama: data mountPath: /var/lib/mysql subPath: mysql livenessProbe: exec: command: [“mysqladmin”, “ping”] initialDelaySeconds: 30 periodSeconds: 5 timeoutSeconds: 5 readyProbe: exec: command: [“mysql” , “-h”, “127.0.0.1”, “-e”, “SELECT 1”] initialDelaySeconds: 5 periodSeconds: 5 timeoutSeconds: 1 volume: – nama: config emptyDir: {} volumeClaimTemplates: – metadata: nama: spesifikasi data : accessModes: [“ReadWriteOnce”] sumber daya: permintaan: penyimpanan: 1Gi

Ini adalah manifes yang cukup panjang jadi mari kita bongkar apa yang terjadi. Layanan tanpa kepala

dibuat dengan menyetel clusterIP-nya ke Tidak Ada. Ini terkait dengan StatefulSet dan memberikan identitas jaringan untuk Pod-nya. StatefulSet dibuat untuk menampung MySQL Pods. Field replika menentukan bahwa tiga Pod akan dijalankan. Layanan tanpa kepala direferensikan oleh bidang serviceName. Di dalam StatefulSet, wadah init dibuat yang mengisi file di dalam direktori konfigurasi yang dipasang menggunakan volume persisten. Container menjalankan skrip Bash yang menetapkan indeks ordinal dari Pod yang sedang berjalan. Ketika indeks adalah 0, Pod adalah yang pertama dibuat dalam StatefulSet sehingga menjadi node utama MySQL. Pod lainnya dikonfigurasi sebagai replika. File konfigurasi yang sesuai akan ditulis ke dalam volume yang nantinya dapat diakses oleh wadah MySQL. Penampung MySQL dibuat dengan volume konfigurasi yang dipasang ke direktori MySQL yang benar. Ini memastikan instance MySQL terkonfigurasi sebagai primer atau replika, tergantung pada Pod pertama yang dimulai di StatefulSet. Probe Liveness dan kesiapan digunakan untuk mendeteksi saat instance MySQL siap. Ini mencegah Pod berturut-turut di StatefulSet dimulai sampai yang sebelumnya Berjalan, memastikan replika MySQL tidak ada sebelum node utama selesai.

Deployment atau ReplicaSet biasa tidak dapat mengimplementasikan alur kerja ini. Setelah Pod Anda dimulai, Anda dapat meningkatkan atau menurunkan StatefulSet tanpa mengambil risiko penghancuran node utama MySQL. Kubernetes memberikan jaminan bahwa urutan Pod yang dibuat akan dipatuhi.

# Buat MySQL StatefulSet $ ​​kubectl apply -f mysql-statefulset.yaml # Skala hingga 5 Pod – MySQL primer dan 4 replika MySQL $ kubectl scale statefulset mysql — replicas=5Pembaruan Bergulir

StatefulSets mengimplementasikan pembaruan bergulir saat Anda mengubah spesifikasinya. Kontroler StatefulSet akan mengganti setiap Pod dalam urutan terbalik berurutan, menggunakan indeks ordinal yang ditetapkan secara persisten. mysql-3 akan dihapus dan diganti terlebih dahulu, diikuti oleh mysql-2 dan mysql-1. mysql-2 tidak akan diperbarui hingga Pod mysql-3 baru bertransisi ke status Berjalan.

Mekanisme pembaruan bergulir juga mencakup dukungan untuk penerapan bertahap. Menyetel bidang .spec.updateStrategy.rollingUpdate.partition di manifes StatefulSet Anda akan memerintahkan Kubernetes untuk hanya memperbarui Pod dengan indeks ordinal yang lebih besar atau sama dengan partisi yang diberikan.

apiVersion: apps/v1 kind: StatefulSet metadata: name: mysql spec: pemilih: matchLabels: app: mysql serviceName: mysql replicas: 3 updateStrategy: rollingUpdate: partisi: 1 template: … volumeClaimTemplates: …

Dalam contoh ini hanya Pod yang diindeks 1 atau lebih tinggi yang akan ditargetkan oleh operasi pembaruan. Pod pertama di StatefulSet tidak akan menerima spesifikasi baru sampai partisi diturunkan atau dihapus.

Limitations

StatefulSets memiliki beberapa batasan yang harus Anda ketahui sebelum Anda mengadopsinya. Gotcha umum ini dapat membuat Anda tersandung ketika Anda mulai men-deploy aplikasi stateful.

Menghapus StatefulSet tidak menjamin Pod akan dihentikan dalam urutan yang ditunjukkan oleh identitasnya. Menghapus StatefulSet atau mengurangi jumlah replikanya tidak akan menghapus volume terkait. Ini menjaga dari kehilangan data yang tidak disengaja. Menggunakan pembaruan bergulir dapat menciptakan situasi di mana terjadi keadaan rusak yang tidak valid. Ini terjadi saat Anda menyediakan konfigurasi yang tidak pernah bertransisi ke status Running atau Ready karena ada masalah dengan aplikasi Anda. Mengembalikan ke konfigurasi yang baik tidak akan menyelesaikan masalah karena Kubernetes menunggu tanpa batas waktu hingga Pod yang buruk menjadi Ready. Kamu harus menyelesaikan situasi secara manual dengan menghapus Pods yang tertunda atau gagal.

StatefulSets juga menghilangkan mekanisme untuk mengubah ukuran volume yang terhubung ke setiap Pod. Anda harus mengedit secara manual setiap volume persisten dan klaim volume persisten yang sesuai, kemudian menghapus StatefulSet dan menghilangkan Pod-nya. Membuat StatefulSet baru dengan spesifikasi yang telah direvisi akan memungkinkan Kubernetes untuk mendapatkan kembali Pod-Pod yang ditinggalkan dan mengubah ukuran volume.

Ketika Tidak Menggunakan StatefulSet

Anda hanya boleh menggunakan StatefulSet ketika replika individu memiliki statusnya sendiri. StatefulSet tidak diperlukan ketika semua replika memiliki status yang sama, bahkan jika itu persisten.

Dalam situasi ini Anda dapat menggunakan ReplicaSet atau Deployment biasa untuk meluncurkan Pod Anda. Setiap volume yang dipasang akan dibagikan ke semua Pod yang merupakan perilaku yang diharapkan untuk sistem stateless.

A StatefulSet tidak menambah nilai kecuali Anda memerlukan penyimpanan persisten individual atau pengenal replika lengket. Penggunaan StatefulSet yang salah dapat menyebabkan kebingungan dengan menyarankan bahwa Pod adalah stateful ketika mereka benar-benar menjalankan beban kerja stateless.

Summary

StatefulSets memberikan identitas persisten untuk Pod Kubernetes yang direplikasi. Setiap Pod diberi nama dengan indeks ordinal yang dialokasikan secara berurutan. Saat Pod dijadwal ulang, penggantinya mewarisi identitasnya. StatefulSet juga memastikan bahwa Pod dihentikan dengan urutan terbalik saat dibuat.

StatefulSets memungkinkan Kubernetes untuk mengakomodasi aplikasi yang memerlukan penerapan rolling yang anggun, pengidentifikasi jaringan yang stabil, dan akses yang andal ke penyimpanan persisten. Mereka cocok untuk situasi apa pun di mana replika dalam satu set Pod memiliki statusnya sendiri yang perlu dipertahankan.

A StatefulSet tidak perlu digunakan jika replika Anda tidak memiliki status, bahkan jika mereka menyimpan beberapa data persisten. Deployment dan ReplicaSet lebih cocok ketika replika individu tidak perlu diidentifikasi atau diskalakan dalam urutan yang konsisten.

Itulah berita seputar Apa Itu StatefulSet Kubernetes? Kapan Anda Harus Menggunakannya?, semoga bermanfaat. Disadur dari HowToGeek.com.

Terbaru

  • Cara Download Aplikasi BUSSID Versi 3.7.1 Masih Dicari dan Link Download Aman Mediafire
  • Inilah Cara Lengkap Mengajukan SKMT dan SKBK di EMIS GTK 2026, Biar Tunjangan Cair Tanpa Drama!
  • Inilah Kenapa Bukti Setor Zakat Kalian Harus Ada NPWP-nya, Jangan Sampai Klaim Pajak Ditolak!
  • Inilah Cara Jadi Clipper Video Sukses Tanpa Perlu Tampil di Depan Kamera
  • Inilah Cara Upload NPWP dan Rekening di EMIS GTK Madrasah Terbaru, Jangan Sampai Tunjangan Terhambat!
  • Inilah Fakta di Balik Video Ukhti Sholat Mukena Pink Viral yang Bikin Geger Media Sosial
  • Belum Tahu? Inilah Langkah Pengisian Survei Digitalisasi Pembelajaran 2026 Biar Nggak Salah
  • Ini Kronologi Video Viral Ibu Tiri vs Anak Tiri Ladang Sawit Tiktok
  • Inilah Caranya Update Chromebook Sekolah Agar Siap Digunakan untuk TKA SD dan SMP
  • Inilah Caranya Menghindari Mafia Kontraktor Renovasi Nakal Supaya Budget Nggak Boncos
  • Inilah Trik Rahasia Tembus 4000 Jam Tayang YouTube Tahun 2026 Cuma Dalam 2 Hari
  • Inilah Rahasia Tomoro Coffee Bisa Singkirkan Semua Pesaing dan Ekspansi Massif Banget!
  • Inilah Kenapa AI Sering Jadi Kambing Hitam Saat PHK Massal, Padahal Masalahnya Bukan Itu!
  • Inilah Cara Baru Cepat Monetisasi YouTube Tanpa Trik Musik, Cuma 2 Bulan Langsung Cuan!
  • Inilah Kapan Pengumuman SNBP 2026 Jam Berapa Lengkap dengan Cara Cek Hasil Kelulusannya
  • Belum Tahu? Inilah Cara Zakat Perusahaan Kalian Bisa Jadi Pengurang Pajak Penghasilan Bruto!
  • Inilah Cara Menggabungkan Grid Foto Online dan Hapus Background Foto
  • Kenapa Youtuber Mulai Harus Hati-hati Pakai AI: Bisa Digugat dan Kehilangan Hak Cipta!
  • Inilah Alasan Kenapa Sumbangan ke Tempat Ibadah Biasa Nggak Bisa Langsung Jadi Pemotong Pajak!
  • Belum Tahu? Inilah Cara Pasang Iklan Meta Ads untuk Sales WiFi Supaya Banjir Closingan!
  • Inilah Alur Pengerjaan EMIS GTK 2026 yang Benar dari Awal Sampai Akhir
  • Inilah 27 Sekolah Kedinasan untuk Lulusan SMK 2026, Bisa Kuliah Gratis dan Langsung Jadi CPNS!
  • Inilah Cara Kuliah S2 di Inggris dengan GREAT Scholarship 2026: Syarat Lengkap, Daftar Kampus, dan Tips Jitu Biar Lolos!
  • Belum Tahu? Inilah Alasan Non-Muslim Juga Bisa Ngurangin Pajak Pake Sumbangan Keagamaan Wajib!
  • Inilah Kenapa Zakat ke Pondok Pesantren Mungkin Nggak Bisa Jadi Pengurang Pajak, Yuk Cek Syaratnya!
  • Inilah Caranya Daftar SMA Unggul Garuda Baru 2026 yang Diperpanjang, Cek Syarat dan Link Resminya!
  • Cara Cek Pencairan KJP Plus Tahap 1 Januari 2026 Beserta Daftar Nominal Lengkapnya
  • Lengkap! Inilah Kronologi Meninggalnya Vidi Aldiano Berjuang Melawan Kanker
  • Inilah Cara Tarik Data PKH di EMIS 4.0 Agar Bantuan Siswa Tetap Cair!
  • Inilah Trik Jitu SEO Shopee untuk Pemula: Jualan Laris Manis Tanpa Perlu Bakar Duit Iklan!
  • Portainer at ProveIt Con 2026
  • How to Reset a Virtual Machine in VirtualBox: A Step-by-Step Guide
  • Notepad Security Risks: How Feature Creep Turned a Simple Tool Into a Potential Backdoor
  • How to Generate Battery Report in Windows 11: A Simple Guide
  • How to Setting Up a Pro-Level Security System with Reolink and Frigate NVR
  • How to Use SoulX FlashHead To Create The Best Talking Avatar for Free on Google Colab!
  • New Claude AI Memory: How to Seamlessly Sync ChatGPT to Anthropic in Minutes
  • Securing LLM with Agentverse (Secure and Scalable Inference)
  • ModernBERT: Why the Encoder-Only Model is Making a Massive Comeback in AI History
  • How to Build Your First AI App with Lovable AI Today!
  • Apa itu Spear-Phishing via npm? Ini Pengertian dan Cara Kerjanya yang Makin Licin
  • Apa Itu Predator Spyware? Ini Pengertian dan Kontroversi Penghapusan Sanksinya
  • Mengenal Apa itu TONESHELL: Backdoor Berbahaya dari Kelompok Mustang Panda
  • Siapa itu Kelompok Hacker Silver Fox?
  • Apa itu CVE-2025-52691 SmarterMail? Celah Keamanan Paling Berbahaya Tahun 2025
Beli Morning Star Kursi Gaming/Kantor disini: https://s.shopee.co.id/805iTUOPRV
Beli Pemotong Rumput dengan Baterai IRONHOOF 588V Mesin Potong Rumput 88V disini https://s.shopee.co.id/70DBGTHtuJ

©2026 emka.web.id | Design: Newspaperly WordPress Theme