Mengurus Aplikasi Berkeadaan dengan StatefulSets
Lancarkan dan urus aplikasi berkeadaan seperti pangkalan data menggunakan StatefulSets, sambil memastikan identiti rangkaian yang stabil dan storan kekal.
Mengurus Aplikasi Berkeadaan dengan StatefulSets ialah pelajaran Docker dan Kubernetes untuk Pembangun percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Docker dan Kubernetes untuk Pembangun, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Docker dan Kubernetes untuk Pembangun merangkumi sejumlah 4 pelajaran.
Aplikasi Berkeadaan dalam K8s
Apabila menggunakan aplikasi dalam Kubernetes, sesetengah aplikasi adalah tanpa keadaan, iaitu aplikasi tersebut tidak menyimpan data secara setempat dan boleh diskalakan atau digantikan dengan mudah.
Walau bagaimanapun, banyak aplikasi kritikal seperti pangkalan data atau baris gilir mesej adalah berkeadaan. Aplikasi ini memerlukan storan kekal dan identiti rangkaian yang stabil.
Pelajaran ini memperkenalkan StatefulSets, objek API Kubernetes yang direka khusus untuk mengurus beban kerja berkeadaan ini.
Mengapa StatefulSets?
Deployment Kubernetes tradisional sangat sesuai untuk aplikasi tanpa keadaan. Deployment ini mencipta Pod dengan nama sembarangan dan boleh menggantikannya secara bebas.
Namun, aplikasi berkeadaan memerlukan:
- Identiti rangkaian yang stabil dan unik: Setiap tika memerlukan nama yang konsisten.
- Storan stabil dan kekal: Data mesti kekal selepas Pod dimulakan semula atau dijadualkan semula.
- Penggunaan dan penskalaan mengikut tertib: Kadangkala tika perlu dimulakan atau dihentikan mengikut urutan tertentu.
StatefulSets menyediakan keupayaan penting ini.
Ciri Utama StatefulSets
StatefulSets menawarkan beberapa ciri berkuasa untuk mengurus aplikasi berkeadaan:
- ID Rangkaian Stabil: Setiap Pod mendapat nama yang boleh dijangka (contohnya
web-0,web-1) dan nama hos DNS. - Storan Kekal Stabil: Berintegrasi dengan Persistent Volumes (PVs) dan Persistent Volume Claims (PVCs) untuk memberikan setiap Pod storan kekalnya sendiri.
- Jaminan Mengikut Tertib: Memastikan Pod dicipta, diskalakan dan dipadam mengikut urutan ordinal yang ketat.
- Penggunaan Berperingkat: Pod hanya dicipta selepas storannya sedia, dan hanya dipadam selepas ditutup dengan baik.
Komponen StatefulSet
StatefulSet biasanya berfungsi bersama sumber Kubernetes yang lain:
- Perkhidmatan Tanpa Kepala: Menyediakan identiti rangkaian yang stabil untuk Pod. Ia tidak mengimbangkan beban trafik, tetapi mencipta entri DNS unik untuk setiap Pod.
- Templat Pod: Mentakrifkan spesifikasi untuk Pod, termasuk bekas, sumber dan sebagainya.
- Templat Tuntutan Volume: Menjana Persistent Volume Claim (PVC) unik untuk setiap Pod bagi memastikan storan khusus.
Mentakrifkan Perkhidmatan Tanpa Kepala
Sebelum mencipta StatefulSet, anda biasanya mentakrifkan Perkhidmatan Tanpa Kepala. Perkhidmatan ini penting untuk menetapkan identiti rangkaian yang stabil kepada Pod berkeadaan anda.
Perhatikan clusterIP: None, yang memberitahu Kubernetes supaya tidak menetapkan IP kluster, lalu menjadikannya "tanpa kepala".
apiVersion: v1
kind: Service
metadata:
name: my-app-service
labels:
app: my-app
spec:
ports:
- port: 80
name: web
clusterIP: None # This makes it a Headless Service
selector:
app: my-appMencipta StatefulSet Asas
Sekarang, mari lihat takrif StatefulSet asas. Ia dipautkan kepada Perkhidmatan Tanpa Kepala kita menggunakan serviceName dan mentakrifkan volumeClaimTemplates untuk storan kekal.
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: my-app
spec:
serviceName: "my-app-service" # Link to Headless Service
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-container
image: nginx
ports:
- containerPort: 80
volumeMounts:
- name: www
mountPath: /usr/share/nginx/html
volumeClaimTemplates:
- metadata:
name: www
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 1GiMemahami Identiti Pod
Apabila StatefulSet daripada babak sebelumnya digunakan, ia akan mencipta tiga Pod bernama my-app-0, my-app-1 dan my-app-2.
Setiap Pod juga mendapat entri DNS stabilnya sendiri, seperti my-app-0.my-app-service.default.svc.cluster.local. Ini membolehkan perkhidmatan lain menyambung kepada tika tertentu dengan boleh dipercayai.
Yang penting, setiap Pod juga akan mendapat Persistent Volume Claim uniknya sendiri (contohnya www-my-app-0), bagi memastikan storan khusus.
Penggunaan dan Penskalaan Mengikut Tertib
StatefulSets menguatkuasakan urutan yang ketat untuk penciptaan, penskalaan dan pemadaman Pod. Ini penting untuk aplikasi yang urutannya bermakna (contohnya pangkalan data utama dan replika-replikanya).
- Penciptaan: Pod dicipta mengikut urutan ordinal menaik (
my-app-0, kemudianmy-app-1dan seterusnya). Setiap Pod mesti berjalan sepenuhnya dan sedia sebelum Pod seterusnya dicipta. - Pemadaman: Pod ditamatkan mengikut urutan ordinal menurun (
my-app-2, kemudianmy-app-1dan seterusnya). Setiap Pod mesti ditutup sepenuhnya sebelum Pod seterusnya dipadam. - Penskalaan: Begitu juga, penskalaan naik menambah Pod mengikut urutan, manakala penskalaan turun membuangnya dalam urutan terbalik.
Mengemas Kini StatefulSets
StatefulSets menyokong kemas kini terkawal pada Podnya, yang biasanya digunakan untuk melancarkan versi baharu aplikasi anda.
- RollingUpdate (lalai): Pod dikemas kini mengikut urutan ordinal terbalik (
my-app-2, kemudianmy-app-1dan seterusnya). Setiap Pod dikemas kini dan sedia sebelum Pod seterusnya dimulakan. - OnDelete: Strategi ini memerlukan campur tangan manual. Pengawal StatefulSet tidak akan mengemas kini Pod secara automatik. Anda mesti memadam Pod secara manual supaya templat baharu berkuat kuasa.
Kemas kini bergilir memastikan masa henti minimum dan mengekalkan keadaan aplikasi semasa naik taraf.
Semakan Ciri StatefulSet
Manakah antara berikut merupakan ciri atau keperluan utama StatefulSets Kubernetes?
Imbas Kembali StatefulSets
Tahniah! Anda telah mempelajari tentang StatefulSets Kubernetes.
- StatefulSets mengurus aplikasi berkeadaan dengan memastikan identiti yang stabil dan storan kekal.
- StatefulSets menyediakan ID rangkaian yang stabil, operasi mengikut tertib dan menggunakan Templat Tuntutan Volume untuk storan khusus.
- Perkhidmatan Tanpa Kepala sering digunakan untuk menyediakan entri DNS yang stabil bagi Pod StatefulSet.
- StatefulSets menyokong kemas kini terkawal dengan strategi seperti
RollingUpdate.
StatefulSets penting untuk menjalankan pangkalan data, baris gilir mesej dan perkhidmatan berkeadaan lain dengan boleh dipercayai dalam Kubernetes.
Pelajari Docker dan Kubernetes untuk Pembangun dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 12
- Pelajaran
- 48
Soalan Lazim
Adakah pelajaran “Mengurus Aplikasi Berkeadaan dengan StatefulSets” percuma?
Ya — teks penuh “Mengurus Aplikasi Berkeadaan dengan StatefulSets” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Docker dan Kubernetes untuk Pembangun, tingkat taraf kepada CoddyKit PRO. Kursus Docker dan Kubernetes untuk Pembangun merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Mengurus Aplikasi Berkeadaan dengan StatefulSets”?
Lancarkan dan urus aplikasi berkeadaan seperti pangkalan data menggunakan StatefulSets, sambil memastikan identiti rangkaian yang stabil dan storan kekal. Anda berlatih Docker dan Kubernetes untuk Pembangun menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Docker dan Kubernetes untuk Pembangun?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Docker dan Kubernetes untuk Pembangun di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.
Berapa lamakah pelajaran “Mengurus Aplikasi Berkeadaan dengan StatefulSets” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Docker dan Kubernetes untuk Pembangun ini?
Ya. Setiap pelajaran Docker dan Kubernetes untuk Pembangun menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Volume Kekal dan Tuntutan Volume Kekal
- Mengurus Aplikasi Berkeadaan dengan StatefulSets
- ConfigMaps dan Rahsia untuk Konfigurasi
- Kelas Storan dan Penyediaan Dinamik