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

  • Inilah Cara Mengaktifkan Fitur Vertical Tab di Google Chrome Biar Tampilan Browser Kalian Makin Lega dan Rapi
  • Inilah Alasan Kenapa elementary OS Adalah Pilihan Paling Pas Buat Pengguna macOS yang Ingin Coba Linux
  • Inilah Alasan Kenapa Windows Server Kalian Restart Terus Setelah Update April 2026
  • Inilah Alasan Layar TV Kalian Sering Kedip Hitam Saat Main Game dan Cara Mengatasinya
  • Inilah Rekomendasi HP Redmi Note RAM 12 GB dan Koneksi 5G Paling Worth It Buat Kalian
  • Inilah Bocoran Event FF Mei 2026 yang Siap Bikin Dompet Kering, Ada Kuda dan MP40 Cobra!
  • Inilah Kejutan Kompensasi Bug FC Mobile 18 April 2026, Ada Kartu Flashback Gratis yang Bikin Skuad Makin Gahar!
  • Inilah Greenwashing: Trik Nakal Perusahaan Biar Terlihat Ramah Lingkungan Padahal Enggak!
  • Inilah Rekomendasi Parfum Segar untuk Cuaca Panas Agar Kalian Tetap Wangi Seharian Tanpa Bikin Pusing
  • Inilah 12 Aplikasi TV Online Terbaik 2026, Nonton Siaran Langsung Jadi Makin Gampang!
  • Inilah Rekomendasi Kipas Angin Dinding Terbaik Buat Ngatasin Cuaca Panas Tanpa Bikin Kantong Jebol
  • Inilah Cara Sewa Mobil yang Aman dan Nyaman Biar Liburan Kalian Makin Seru Tanpa Drama
  • Inilah Cara Daftar Lowongan 30.000 Manajer Koperasi Desa Merah Putih, Cek Jadwal Lengkapnya Di Sini!
  • Inilah Cara Daftar Lowongan 1.369 Manajer Operasional Kampung Nelayan Merah Putih Jadi Pegawai BUMN!
  • Inilah Perbedaan Skin Tint, Cushion, dan Foundation Biar Kalian Nggak Salah Pilih Base Makeup Natural
  • Inilah Rekomendasi Sepeda Lipat Dewasa Terbaik 2026 yang Paling Praktis untuk Kebutuhan Commuting dan Olahraga Harian
  • Inilah 5 Rekomendasi Sepeda Lipat Listrik Jarak Tempuh Terjauh Biar Mobilitas Kalian Makin Praktis!
  • Inilah 30 Ucapan Hari Kartini 2026 Paling Bermakna untuk Caption Media Sosial dan Pesan Personal yang Inspiratif
  • Inilah Cara Daftar Manajer Koperasi Merah Putih, Peluang Karir BUMN dengan 30.000 Formasi
  • Inilah 5 Rekomendasi Bedak Two Way Cake Anti Oksidasi Supaya Wajah Nggak Terlihat Kusam dan Gelap
  • Inilah Syarat dan Cara Mengurus Surat Sehat Jasmani Rohani untuk Daftar Manajer Kopdes Merah Putih
  • Inilah Alasan Harga Plastik Naik dan 7 Alternatif Kemasan Ramah Lingkungan yang Lebih Hemat buat UMKM
  • Inilah Profil Syekh Ahmad Al Misry dan Rekam Jejaknya yang Sedang Viral di Media Sosial
  • Inilah Alasan HP Nokia Jadul Harganya Masih Selangit dan Banyak Diburu Kolektor di Tahun 2026
  • Inilah HP Samsung A Series Terbaru yang Pakai Layar AMOLED, Mewah Tapi Harganya Terjangkau Banget!
  • Inilah Vivo T5 Pro, HP Midrange dengan Baterai 9.020 mAh yang Siap Comeback ke Indonesia!
  • Inilah Cara Daftar Manajer Koperasi Desa Merah Putih 2026, Ada 30.000 Formasi yang Bisa Kalian Lamar!
  • Inilah Alasan Kenapa Kemkomdigi Ancam Blokir Wikipedia dan Dampak Seriusnya Buat Masa Depan Pendidikan Kita
  • Inilah Cara Cek BLT Desa 2026 Tahap 2, Cair Rp900 Ribu Langsung ke Tangan Kalian!
  • Inilah Cara Cek PIP Lewat HP 2026 dan Panduan Lengkap Pencairannya Biar Dana Nggak Hangus
  • Is it Time to Replace Nano? Discover Fresh, the Terminal Text Editor You Actually Want to Use
  • How to Design a Services Like Google Ads
  • How to Fix 0x800ccc0b Outlook Error: Step-by-Step Guide for Beginners
  • How to Fix NVIDIA App Error on Windows 11: Simple Guide
  • How to Fix Excel Formula Errors: Quick Fixes for #NAME
  • How to use the Wan 2.7 AI model: A complete walkthrough
  • How to Run Minimax M2-7 Locally: A Step-by-Step Guide for Beginners
  • How to Build Self-Driving Codebases with Async Agents and NVIDIA Hardware
  • How to create a professional AI influencer using Apob AI
  • How to Use AI-Powered Tools to Level Up Your Stock Market Research Game with Claude Code
  • CrownPlay Konto‑Verifizierung – Schritt‑für‑Schritt Anleitung für deutsche Spieler
  • Coronavirus disease 2019
  • La modernidad de Chamartín, distrito financiero de Madrid.
  • New Text Document
  • Apa itu Spear-Phishing via npm? Ini Pengertian dan Cara Kerjanya yang Makin Licin

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