Anda dapat menggunakan StatefulSet untuk membuat aplikasi stateful dengan cepat di konsol Alibaba Cloud Container Compute Service (ACS). Topik ini menjelaskan cara membuat aplikasi NGINX stateful serta fitur-fitur yang disediakan oleh StatefulSet.
Prasyarat
Klien kubectl harus terhubung ke kluster. Untuk informasi lebih lanjut, lihat Dapatkan File kubeconfig Kluster dan Gunakan kubectl untuk Terhubung ke Kluster.
Informasi Latar Belakang
StatefulSet menyediakan fitur-fitur berikut:
Fitur | Deskripsi |
Konsistensi Pod | Konsistensi Pod memastikan bahwa pod dimulai dan dihentikan dalam urutan yang ditentukan dan memastikan konsistensi jaringan. Konsistensi Pod ditentukan oleh konfigurasi pod, terlepas dari node tempat pod dijadwalkan. |
Penyimpanan stabil dan persisten | VolumeClaimTemplate memungkinkan Anda untuk memasang volume persisten (PV) ke setiap pod. PV yang dipasang ke pod replika tidak dihapus setelah Anda menghapus pod replika atau menurunkan jumlah pod replika. |
Pengenal jaringan stabil | Setiap pod dalam StatefulSet mendapatkan |
Urutan stabil | Untuk StatefulSet dengan N pod replika, setiap pod diberi nomor ordinal integer dari 0 hingga N-1. Ordinal yang diberikan kepada pod dalam StatefulSet bersifat unik. |
Prosedur
Langkah 1: Konfigurasikan pengaturan dasar
Masuk ke konsol ACS. Di panel navigasi sisi kiri, klik Clusters.
Di halaman Clusters, temukan kluster yang ingin Anda kelola dan klik ID-nya. Di panel navigasi sisi kiri halaman detail kluster, pilih .
Di halaman StatefulSets, klik Create from Image.
Di halaman wizard Basic Information, konfigurasikan pengaturan dasar.
Parameter
Deskripsi
Name
Masukkan nama untuk aplikasi.
Replicas
Jumlah pod yang disediakan untuk aplikasi. Nilai default: 2.
Workload
Pilih StatefulSet.
Label
Tambahkan label ke aplikasi. Label digunakan untuk mengidentifikasi aplikasi.
Annotations
Tambahkan anotasi ke aplikasi.
Instance Type
Tipe instans yang ingin Anda gunakan. Untuk informasi lebih lanjut, lihat Ikhtisar pod ACS.
QoS Type
Pilih kelas QoS. Untuk informasi lebih lanjut, lihat Computing power QoS.
Pod tujuan umum mendukung kelas QoS Default dan BestEffort.
Pod peningkatan performa hanya mendukung kelas QoS Default.
Klik Next untuk melanjutkan ke halaman wizard Container.
Langkah 2: Konfigurasikan kontainer
Di halaman wizard Container, konfigurasikan gambar kontainer, konfigurasi sumber daya, port, variabel lingkungan, pemeriksaan kesehatan, siklus hidup, volume, dan log.
Klik Add Container di sebelah kanan tab Container1 untuk menambahkan lebih banyak kontainer.
Di bagian General, konfigurasikan pengaturan dasar kontainer.
Parameter
Deskripsi
Image Name
Pilih Gambar
Klik Select images dan pilih gambar kontainer.
Container Registry Enterprise Edition: Pilih gambar yang disimpan pada instance Container Registry Enterprise Edition. Anda harus memilih wilayah dan instance Container Registry tempat gambar tersebut berada. Untuk informasi lebih lanjut tentang Container Registry, lihat Apa itu Container Registry?
Container Registry Personal Edition: Pilih gambar yang disimpan pada instance Container Registry Personal Edition. Pastikan bahwa Container Registry Personal Edition telah diaktifkan. Anda harus memilih wilayah dan instance Container Registry tempat gambar tersebut berada.
Artifact Center: Pusat artifact berisi gambar sistem operasi dasar, gambar bahasa dasar, dan gambar terkait AI dan big data untuk kontainerisasi aplikasi. Dalam contoh ini, gambar NGINX dipilih. Untuk informasi lebih lanjut, lihat Ikhtisar pusat artifact.
(Opsional) Atur kebijakan penarikan gambar
Pilih kebijakan penarikan gambar dari daftar drop-down Image Pull Policy. Secara default, kebijakan Kubernetes IfNotPresent digunakan.
ifNotPresent: Jika gambar yang ingin Anda tarik ditemukan di mesin lokal Anda, gambar di mesin lokal Anda digunakan. Jika tidak, sistem akan menarik gambar dari registri gambar.
Always: Sistem menarik gambar dari registri setiap kali aplikasi diterapkan atau diperluas.
Never: Sistem hanya menggunakan gambar di mesin lokal Anda.
(Opsional) Atur rahasia penarikan gambar
Klik Set Image Pull Secret untuk menyetel Rahasia yang digunakan untuk menarik gambar privat.
Anda dapat menggunakan Rahasia untuk menarik gambar dari instance Container Registry Personal Edition. Untuk informasi lebih lanjut tentang cara menyetel Rahasia, lihat Kelola Rahasia.
Anda dapat menarik gambar tanpa menggunakan Rahasia dari instance Container Registry Enterprise Edition. Untuk informasi lebih lanjut, lihat Tarik gambar dari instance Container Registry tanpa menggunakan Rahasia.
Required Resources
Tentukan permintaan sumber daya kontainer.
CPU: Anda dapat mengonfigurasi permintaan CPU dan batas CPU kontainer. Secara default, permintaan CPU sama dengan batas CPU. Sumber daya CPU dibayar sesuai pemakaian. Jika Anda menggunakan template YAML untuk menyetel batas sumber daya yang berbeda dari permintaan sumber daya, permintaan sumber daya secara otomatis diganti dengan nilai batas sumber daya. Untuk informasi lebih lanjut, lihat Spesifikasi sumber daya.
Memory: Anda dapat mengonfigurasi permintaan memori dan batas memori kontainer. Secara default, permintaan memori sama dengan batas memori. Sumber daya memori dibayar sesuai pemakaian. Jika Anda menggunakan template YAML untuk menyetel batas sumber daya yang berbeda dari permintaan sumber daya, permintaan sumber daya secara otomatis diganti dengan nilai batas sumber daya. Untuk informasi lebih lanjut, lihat Spesifikasi sumber daya.
Container Start Parameter
Tentukan opsi startup kontainer. Parameter ini opsional.
stdin: meneruskan input di konsol ACK ke kontainer.
tty: meneruskan parameter mulai yang didefinisikan di terminal virtual ke konsol ACK.
Catatanstdin dan tty digunakan bersama-sama. Dalam hal ini, terminal virtual (tty) dikaitkan dengan stdin kontainer. Sebagai contoh, program interaktif menerima stdin dari pengguna dan menampilkan kontennya di terminal.
Init Containers
Jika Anda memilih kotak centang ini, init kontainer dibuat. Parameter ini opsional.
Init kontainer dapat digunakan untuk memblokir atau menunda startup kontainer aplikasi. Kontainer aplikasi dalam pod mulai secara bersamaan hanya setelah init kontainer mulai. Sebagai contoh, Anda dapat menggunakan init kontainer untuk memverifikasi ketersediaan layanan yang bergantung pada aplikasi. Anda dapat menjalankan alat atau skrip yang tidak disediakan oleh gambar aplikasi di init kontainer untuk menginisialisasi lingkungan runtime untuk kontainer aplikasi. Sebagai contoh, Anda dapat menjalankan alat atau skrip untuk mengonfigurasi parameter kernel atau menghasilkan file konfigurasi. Untuk informasi lebih lanjut, lihat Init Kontainer.
Opsional: Di bagian Ports, klik Add untuk menambahkan port kontainer.
Parameter
Deskripsi
Name
Masukkan nama untuk port kontainer.
Container Port
Tentukan port kontainer yang ingin Anda paparkan. Nomor port harus dalam rentang 1 hingga 65535.
Protocol
Nilai valid: TCP dan UDP.
Opsional: Di bagian Environments, klik Add untuk menambahkan variabel lingkungan.
Tambahkan variabel lingkungan dalam pasangan kunci-nilai ke pod untuk memberikan label lingkungan atau meneruskan konfigurasi. Untuk informasi lebih lanjut, lihat Tampilkan Informasi Pod ke Kontainer Melalui Variabel Lingkungan.
Parameter
Deskripsi
Type
Pilih tipe variabel lingkungan. Nilai valid:
Custom
Parameter
Secrets
Value/ValueFrom
ResourceFieldRef
Jika Anda memilih ConfigMaps atau Rahasia, Anda dapat meneruskan semua data di ConfigMap atau Rahasia yang dipilih ke variabel lingkungan kontainer.
Dalam contoh ini, Rahasia dipilih. Pilih Secrets dari daftar drop-down Tipe dan pilih Rahasia dari daftar drop-down Value/ValueFrom. Secara default, semua data di Rahasia yang dipilih diteruskan ke variabel lingkungan.

Dalam hal ini, file YAML yang digunakan untuk menerapkan aplikasi berisi pengaturan yang merujuk semua data di Rahasia yang dipilih.

Variable Key
Nama variabel lingkungan.
Value/ValueFrom
Nilai variabel lingkungan.
Opsional: Di bagian Health Check, aktifkan probe liveness, readiness, dan startup sesuai kebutuhan bisnis Anda.
Liveness: Periksa apakah kontainer berjalan seperti yang diharapkan. Setelah beberapa kegagalan berturut-turut, kubelet akan memulai ulang kontainer. Probe liveness membantu mengidentifikasi masalah di mana kontainer tetap berjalan tetapi menjadi tidak responsif, seperti deadlock.
Readiness: Probe readiness digunakan untuk menentukan apakah kontainer siap menerima lalu lintas. Pod hanya dilampirkan ke backend Service setelah melewati pemeriksaan readiness.
Startup: Probe startup dieksekusi selama inisialisasi kontainer untuk memverifikasi startup yang berhasil. Probe liveness dan readiness berikutnya hanya dimulai setelah probe startup berhasil.
Untuk informasi lebih lanjut, lihat Konfigurasikan Probe Liveness, Readiness, dan Startup.
Parameter
Deskripsi
HTTP
Mengirim permintaan HTTP GET ke kontainer. Anda dapat menyetel parameter berikut:
Protocol: protokol yang digunakan untuk mengirim permintaan. Nilai valid: HTTP dan HTTPS.
Path: jalur HTTP yang diminta di server.
Port: nomor atau nama port yang dipaparkan oleh kontainer. Nomor port harus antara 1 hingga 65535.
HTTP Header: header kustom dalam permintaan HTTP. Header duplikat diperbolehkan. Anda dapat menentukan header HTTP dalam pasangan kunci-nilai.
Initial Delay (s): bidang initialDelaySeconds dalam file YAML. Bidang ini menentukan waktu tunggu (dalam detik) sebelum probe pertama dilakukan setelah kontainer dijalankan. Nilai default: 3.
Period (s): bidang periodSeconds dalam file YAML. Bidang ini menentukan interval waktu (dalam detik) di mana probe dilakukan. Nilai default: 10. Nilai minimum: 1.
Timeout (s): bidang timeoutSeconds dalam file YAML. Bidang ini menentukan waktu (dalam detik) setelah probe habis waktu. Nilai default: 1. Nilai minimum: 1.
Healthy Threshold: jumlah keberhasilan berturut-turut minimum yang harus terjadi sebelum kontainer dianggap sehat setelah probe gagal. Nilai default: 1. Nilai minimum: 1. Untuk probe kelangsungan hidup, parameter ini harus disetel ke 1.
Unhealthy Threshold: jumlah kegagalan berturut-turut minimum yang harus terjadi sebelum kontainer dianggap tidak sehat setelah berhasil. Nilai default: 3. Nilai minimum: 1.
TCP
Mengirim soket TCP ke kontainer. kubelet mencoba membuka soket pada port yang ditentukan. Jika koneksi dapat dibuat, kontainer dianggap sehat. Jika tidak, kontainer dianggap tidak sehat. Anda dapat mengonfigurasi parameter berikut:
Port: nomor atau nama port yang dipaparkan oleh kontainer. Nomor port harus antara 1 hingga 65535.
Initial Delay (s): bidang initialDelaySeconds dalam file YAML. Bidang ini menentukan waktu tunggu (dalam detik) sebelum probe pertama dilakukan setelah kontainer dimulai. Nilai default: 15.
Period (s): bidang periodSeconds dalam file YAML. Bidang ini menentukan interval waktu (dalam detik) di mana probe dilakukan. Nilai default: 10. Nilai minimum: 1.
Timeout (s): bidang timeoutSeconds dalam file YAML. Bidang ini menentukan waktu (dalam detik) setelah probe habis waktu. Nilai default: 1. Nilai minimum: 1.
Healthy Threshold: jumlah keberhasilan berturut-turut minimum yang harus terjadi sebelum kontainer dianggap sehat setelah probe gagal. Nilai default: 1. Nilai minimum: 1. Untuk probe kelangsungan hidup, parameter ini harus disetel ke 1.
Unhealthy Threshold: jumlah kegagalan berturut-turut minimum yang harus terjadi sebelum kontainer dianggap tidak sehat setelah berhasil. Nilai default: 3. Nilai minimum: 1.
Command
Menjalankan perintah probe di kontainer untuk memeriksa status kesehatan kontainer. Anda dapat mengonfigurasi parameter berikut:
Command: perintah probe yang dijalankan untuk memeriksa status kesehatan kontainer.
Initial Delay (s): bidang initialDelaySeconds dalam file YAML. Bidang ini menentukan waktu tunggu (dalam detik) sebelum probe pertama dilakukan setelah kontainer dimulai. Nilai default: 5.
Period (s): bidang periodSeconds dalam file YAML. Bidang ini menentukan interval waktu (dalam detik) di mana probe dilakukan. Nilai default: 10. Nilai minimum: 1.
Timeout (s): bidang timeoutSeconds dalam file YAML. Bidang ini menentukan waktu (dalam detik) setelah probe habis waktu. Nilai default: 1. Nilai minimum: 1.
Healthy Threshold: jumlah keberhasilan berturut-turut minimum yang harus terjadi sebelum kontainer dianggap sehat setelah probe gagal. Nilai default: 1. Nilai minimum: 1. Untuk probe kelangsungan hidup, parameter ini harus disetel ke 1.
Unhealthy Threshold: jumlah kegagalan berturut-turut minimum yang harus terjadi sebelum kontainer dianggap tidak sehat setelah berhasil. Nilai default: 3. Nilai minimum: 1.
Opsional: Di bagian Lifecycle, konfigurasikan siklus hidup kontainer.
Tentukan parameter berikut untuk mengonfigurasi siklus hidup kontainer: Mulai, Pasca Mulai, dan Pra Berhenti. Untuk informasi lebih lanjut, lihat Lampirkan Handler ke Event Siklus Hidup Kontainer.
Parameter
Deskripsi
Start
Tentukan perintah dan parameter yang berlaku sebelum kontainer mulai.
Post Start
Tentukan perintah yang berlaku setelah kontainer mulai.
Pre Stop
Tentukan perintah yang menghentikan kontainer.
Opsional: Di bagian Volume, konfigurasikan volume yang ingin Anda pasang ke kontainer.
Penyimpanan lokal: Pilih ConfigMap, Rahasia, atau EmptyDir dari daftar drop-down Jenis PV. Kemudian, atur parameter Sumber Pemasangan dan Jalur Kontainer untuk memasang volume ke jalur kontainer. Untuk informasi lebih lanjut, lihat Volume.
Penyimpanan cloud: Disk dan File Storage NAS (NAS) didukung. Untuk informasi lebih lanjut, lihat Ikhtisar Penyimpanan.
Opsional: Di bagian Log, tentukan logging configurations dan tambahkan custom tags ke log yang dikumpulkan.
Parameter
Deskripsi
Konfigurasi Pengumpulan
Logstore: Buat Logstore di Layanan Log untuk menyimpan data log yang dikumpulkan.
Log Path in Container (Can be set to stdout): specifies stdout or a path to collect the log.
Kumpulkan file stdout: Jika Anda menentukan stdout, file stdout akan dikumpulkan.
Log Teks: menentukan bahwa log di jalur tertentu kontainer dikumpulkan. Dalam contoh ini,
/var/log/nginxditentukan sebagai jalur. Karakter wildcard dapat digunakan dalam jalur.
Tag Kustom
Anda juga dapat menambahkan tag kustom. Tag tersebut ditambahkan ke log kontainer saat log dikumpulkan. Anda dapat menambahkan tag kustom ke log kontainer untuk analisis dan penyaringan log.
Klik Next untuk melanjutkan ke halaman wizard Advanced.
Langkah 3: Konfigurasikan pengaturan lanjutan
Di halaman wizard Advanced, konfigurasikan kontrol akses, penskalaan, penjadwalan, anotasi, dan label.
Di bagian Access Control, konfigurasikan pengaturan kontrol akses untuk memaparkan pod backend.
Tentukan cara pod backend dipaparkan ke Internet. Dalam contoh ini, Service ClusterIP dan Ingress dibuat untuk memaparkan aplikasi NGINX ke Internet.
Untuk membuat Service, klik Create di sisi kanan Services. Di kotak dialog Buat, atur parameter.
Untuk membuat Ingress, klik Create di sisi kanan Ingresses. Di kotak dialog Buat, atur parameter.
Opsional: Di bagian Scaling, aktifkan HPA untuk menangani beban kerja yang berfluktuasi.
Horizontal Pod Autoscaler (HPA) dapat secara otomatis menskalakan jumlah pod dalam kluster ACS berdasarkan metrik penggunaan CPU dan memori.
CatatanUntuk mengaktifkan HPA, Anda harus mengonfigurasi sumber daya yang diperlukan oleh kontainer. Jika tidak, HPA tidak akan berlaku.
Parameter
Deskripsi
Metric
Pilih Penggunaan CPU atau Penggunaan Memori. Jenis sumber daya yang dipilih harus sama dengan yang ditentukan di bidang Sumber Daya yang Diperlukan.
Condition
Tentukan ambang batas penggunaan sumber daya. HPA memicu acara peningkatan skala saat ambang batas terlampaui.
Max. Replicas
Jumlah maksimum pod replika ke mana aplikasi dapat diskalakan.
Min. Replicas
Jumlah minimum pod replika yang harus berjalan.
CronHPA dapat menskalakan kluster ACS pada waktu yang dijadwalkan. Sebelum mengaktifkan CronHPA, instal ack-kubernetes-cronhpa-controller terlebih dahulu. Untuk informasi lebih lanjut tentang CronHPA, lihat CronHPA.
Opsional: Di bagian Labels,Annotations, klik Add untuk menambahkan label dan anotasi pod.
Klik Create.
Langkah 4: Lihat Informasi Aplikasi
Setelah aplikasi dibuat, klik View Details di halaman yang muncul untuk pergi ke halaman detail StatefulSet.
Anda juga dapat melihat informasi di halaman Jobs. Klik nama StatefulSet atau klik Details di kolom Actions untuk pergi ke halaman detail StatefulSet.