StatefulSets untuk Aplikasi Berstatus
Lakukan deployment dan kelola aplikasi berstatus seperti basis data menggunakan StatefulSets, dengan memastikan pengenal jaringan stabil dan penyimpanan persisten.
StatefulSets untuk Aplikasi Berstatus adalah pelajaran DevOps Bootcamp gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar DevOps Bootcamp, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus DevOps Bootcamp mencakup 4 pelajaran total.
StatefulSets untuk Aplikasi Stateful
Selamat datang! Dalam pelajaran ini, Anda akan mempelajari StatefulSets, objek Kubernetes yang dirancang untuk mengelola aplikasi stateful.
Berbeda dengan aplikasi stateless (yang mudah diskalakan dan diganti), aplikasi stateful memerlukan identitas unik dan penyimpanan persisten untuk setiap instans. Contohnya adalah basis data, antrean pesan, atau aplikasi khusus yang menyimpan data secara lokal.
Mengapa Stateful? Tantangannya
Deployment tradisional sangat cocok untuk aplikasi stateless. Jika sebuah pod berhenti, pod baru akan menggantikannya, dan tidak masalah pod mana yang melayani permintaan.
Namun, untuk aplikasi stateful, setiap replika sering kali memerlukan identitas unik yang stabil dan penyimpanan khusus miliknya sendiri. Jika pod basis data dimulai ulang, pod tersebut perlu terhubung kembali ke volume data khususnya.
Identitas Jaringan & Pod yang Stabil
Fitur penting StatefulSets adalah menyediakan pengenal jaringan yang stabil dan unik untuk setiap pod.
- Pod diberi nama dengan cara yang dapat diprediksi dan berurutan (misalnya,
web-0,web-1). - Nama hostnya tetap sama saat dimulai ulang.
- Hal ini memungkinkan layanan lain terhubung secara andal ke replika tertentu.
Penyimpanan yang Stabil & Persisten
StatefulSets memastikan setiap pod mendapatkan penyimpanan yang stabil dan persisten. Hal ini ditangani menggunakan Persistent Volume Claims (PVCs).
Saat pod StatefulSet dibuat, sistem secara otomatis menyediakan PVC berdasarkan definisi volumeClaimTemplates. Jika pod berhenti dan dibuat ulang, pod tersebut akan terhubung kembali ke PVC yang sama sehingga dapat mengakses data aslinya.
Struktur YAML StatefulSet
Definisi YAML StatefulSet terlihat mirip dengan Deployment, tetapi memiliki beberapa tambahan penting. Definisi ini mencakup:
apiVersion,kind,metadataspec.replicas,spec.selector,spec.template(seperti pada Deployment)spec.serviceName: Menghubungkan ke layanan tanpa kepala.spec.volumeClaimTemplates: Menentukan cara PVC dibuat untuk setiap pod.
Layanan Tanpa Kepala untuk ID Stabil
Agar StatefulSets dapat menyediakan identitas jaringan yang stabil, StatefulSets memerlukan layanan tanpa kepala. Layanan tanpa kepala tidak memiliki IP klaster. Sebagai gantinya, layanan tersebut langsung mengembalikan alamat IP pod yang dipilihnya.
StatefulSet menggunakan layanan ini untuk mendaftarkan entri DNS bagi setiap podnya (misalnya, pod-0.my-service.my-namespace.svc.cluster.local).
apiVersion: v1
kind: Service
metadata:
name: my-app-headless
spec:
ports:
- port: 80
name: web
clusterIP: None # This makes it a headless service
selector:
app: my-appVolumeClaimTemplates
Bagian volumeClaimTemplates hanya ada pada StatefulSets. Bagian ini merupakan templat untuk Persistent Volume Claims (PVCs) yang akan dibuat untuk setiap replika.
Setiap pod dalam StatefulSet (misalnya, my-app-0, my-app-1) akan mendapatkan PVC sendiri (misalnya, data-my-app-0, data-my-app-1) berdasarkan templat ini, sehingga setiap pod memiliki penyimpanan khusus.
volumeClaimTemplates:
- metadata:
name: data # This name is used in Pod's volumeMounts
spec:
accessModes: [ "ReadWriteOnce" ]
storageClassName: standard
resources:
requests:
storage: 1GiContoh StatefulSet Lengkap
Berikut contoh lengkap StatefulSet Nginx sederhana. Perhatikan serviceName yang menghubungkan ke layanan tanpa kepala dan volumeClaimTemplates.
Untuk menerapkannya, simpan sebagai nginx-statefulset.yaml lalu jalankan kubectl apply -f nginx-statefulset.yaml.
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: web
spec:
serviceName: "nginx-headless" # Must match headless service name
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: k8s.gcr.io/nginx-slim:0.8
ports:
- containerPort: 80
name: web
volumeMounts:
- name: www # Mounts the volume from the PVC
mountPath: /usr/share/nginx/html
volumeClaimTemplates:
- metadata:
name: www # This name links to volumeMounts.name
spec:
accessModes: [ "ReadWriteOnce" ]
storageClassName: standard
resources:
requests:
storage: 1Gi
---
apiVersion: v1
kind: Service
metadata:
name: nginx-headless
labels:
app: nginx
spec:
ports:
- port: 80
name: web
clusterIP: None
selector:
app: nginxPenamaan & Pengurutan Pod
Setelah diterapkan, Anda akan melihat pod bernama seperti web-0, web-1. Indeks ini stabil dan unik.
StatefulSets menerapkan pengurutan ketat untuk operasi penskalaan. Pod dibuat secara berurutan (0, 1, 2...) dan dihentikan dalam urutan terbalik (..., 2, 1, 0).
Pendekatan berurutan ini sangat penting bagi banyak sistem stateful terdistribusi untuk mempertahankan konsistensi.
Penskalaan & Pembaruan Bergulir
Anda dapat menskalakan StatefulSet seperti deployment, menggunakan kubectl scale statefulset web --replicas=3.
Pembaruan bergulir juga berfungsi, tetapi dengan jaminan urutan yang sama: pod diperbarui satu per satu, dalam urutan ordinal terbalik, sehingga pod berikutnya tidak diperbarui sebelum pod sebelumnya siap.
Pengaturan yang cermat ini meminimalkan gangguan pada aplikasi stateful.
Periksa Pemahaman Anda
Manakah dari berikut ini yang merupakan karakteristik atau persyaratan utama StatefulSets Kubernetes?
Rangkuman: StatefulSets dalam Praktik
Kerja bagus! Dalam pelajaran ini, Anda telah mempelajari StatefulSets, objek Kubernetes yang andal untuk mengelola aplikasi stateful.
- StatefulSets menyediakan identitas jaringan yang stabil dan operasi yang berurutan.
- StatefulSets menggunakan
volumeClaimTemplatesuntuk menyediakan penyimpanan persisten khusus bagi setiap replika. - Layanan tanpa kepala sangat penting untuk menyediakan ID jaringan yang stabil.
StatefulSets merupakan dasar penting untuk menjalankan basis data dan beban kerja stateful penting lainnya secara andal di Kubernetes.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “StatefulSets untuk Aplikasi Berstatus” gratis?
Ya — teks lengkap “StatefulSets untuk Aplikasi Berstatus” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus DevOps Bootcamp, upgrade ke CoddyKit PRO. Kursus DevOps Bootcamp mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “StatefulSets untuk Aplikasi Berstatus”?
Lakukan deployment dan kelola aplikasi berstatus seperti basis data menggunakan StatefulSets, dengan memastikan pengenal jaringan stabil dan penyimpanan persisten. Kamu berlatih DevOps Bootcamp dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai DevOps Bootcamp?
Tidak diperlukan pengalaman sebelumnya. DevOps Bootcamp di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “StatefulSets untuk Aplikasi Berstatus” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran DevOps Bootcamp ini?
Ya. Setiap pelajaran DevOps Bootcamp menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- StatefulSets untuk Aplikasi Berstatus
- DaemonSets untuk Tugas Khusus Node
- Memahami Operator Kubernetes
- Definisi Sumber Daya Kustom (CRD)