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 Beasiswa Bekraf Digital Talent 2026: Solusi Buat Kalian yang Mau Jago AI dan Makin Produktif
  • Inilah Cara Memilih Power Bank yang Aman Dibawa ke Pesawat Agar Tidak Disita Petugas
  • Inilah Bocoran Harga dan Spesifikasi Redmi K90 Max, HP Gaming Dimensity 9500 Termurah yang Segera Dirilis!
  • Inilah RedMagic Gaming Tablet 5 Pro, Monster Gaming dengan Layar 185Hz dan Chipset Snapdragon 8 Elite yang Bikin Melongo!
  • Inilah Kenapa IGRS Trending di X, Bocorkan Spoiler Penting Game 007 First Light Hingga Ending!
  • Inilah 5 HP Murah Terbaru dengan Baterai Jumbo yang Siap Masuk Indonesia 2026, Ada yang Sampai 7.800 mAh!
  • Inilah Alasan Kenapa Samsung Galaxy S27 Bakal Pakai 50 Persen Chipset Exynos, Qualcomm Mulai Ditinggalkan?
  • Inilah Vivo Y31d Pro, Smartphone “Badak” dengan Baterai 7000mAh dan Ketahanan Standar Militer
  • Inilah 11 Game Penghasil Saldo DANA Tercepat 2026, Cara Asyik Cari Cuan Sambil Rebahan!
  • Inilah Motorola Edge 70 Pro, HP Midrange Gahar dengan Baterai 6500 mAh yang Siap Meluncur!
  • Inilah Kode Redeem FF Max 15 April 2026, Buru Skin Undersea Splatter dan Item Eksklusif Bawah Laut Sekarang!
  • Inilah Bocoran Vivo X500 Series dan Kamera Vlogging Saku yang Bakal Bikin DJI Ketar-ketir!
  • Inilah 6 Rekomendasi HP Gaming Paling Murah April 2026, Main Game Berat Nggak Pake Lag!
  • Inilah Caranya Manfaatin SPayLater di Aplikasi ShopeePay Biar Keuangan Tetap Aman Saat Tanggal Tua
  • Inilah Perbedaan Durasi Reels IG dan FB Terbaru 2026, Ternyata Bisa Sampai 20 Menit Lho!
  • Inilah Cara Mengurus Surat Keterangan Bebas Narkoba (SKBN), Syarat Lengkap, Biaya, dan Lokasi Pembuatannya
  • Inilah Cara Pakai Panel Zurra v2 FF Aim Lock Headshot, Simak Fitur dan Risikonya Sebelum Pakai!
  • Inilah Alasan Kenapa Sesi Akhir UTBK 2026 Nggak Lebih Sulit dan Penjelasan Lengkap Sistem Penilaiannya
  • Inilah Kenapa Tidak Bisa Login WA Web dan Solusi Paling Ampuh Biar Langsung Connect Lagi
  • Inilah Cara Mengatasi MyTelkomsel Oops Terjadi Kesalahan, Jangan Panik Dulu!
  • Inilah Cara Mengisi SKP Satpol PP dan Pranata Trantibum 2026 di e-Kinerja My ASN, Dijamin Anti Ribet!
  • Inilah Cara Akses IPTV Playlist M3U Indonesia Terbaru 2026, Nonton Ribuan Channel Tanpa Biaya!
  • Tutorial SEO Anchor Link: Cara Dapat Ranking di Google Lewat Strategi Link Building yang Aman
  • Inilah Huawei Pura 90 Pro, HP Flagship dengan Desain Kamera Segitiga Unik dan Performa Kirin yang Makin Gahar
  • Inilah 5 Rekomendasi Kipas Tangan Portable Cas Tahan Lama Biar Kalian Tetap Adem Saat Cuaca Panas Ekstrem
  • Inilah MacBook Neo, Laptop Termurah Apple yang Ternyata Punya Performa Gaming Gila!
  • Inilah Daftar Tablet SIM Card 5G dengan Keyboard Terbaik 2026 untuk Kerja Remote
  • Inilah Daftar Game Penghasil Pulsa 2026, Cara Cerdas Dapat Kuota Gratis Tanpa Keluar Duit Sepeserpun!
  • Inilah Caranya Klaim Bonus Kuota Lokal Smartfren 2026, Jangan Sampai Bonus Kalian Hangus Sia-sia!
  • Inilah Cara Mengatasi Rockstar Games Launcher Not Responding dan Macet Saat Connecting
  • 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 Create Music Offline using Go-Compose AI: A Step-by-Step Guide
  • How to Effortlessly Create Professional ID Photos at Home Using HitPaw
  • How to Master AI Video Storytelling with Seendance 2.0 & Artlist Workflow
  • How to Get Google Veo 3 for Free: Your Ultimate Guide to AI Video Creation
  • How to Build a Powerful AI Agent Workflow for Your Business with GLM 5V Turbo Vision
  • 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

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