Container Service for Kubernetes (ACK) memungkinkan Anda membuat StatefulSet melalui Konsol. Contoh ini mendeploy aplikasi NGINX stateful untuk mendemonstrasikan fitur-fitur StatefulSet.
Prasyarat
kubectl telah terhubung ke kluster Kubernetes Anda. Dapatkan kubeconfig untuk kluster dan gunakan kubectl untuk menghubungkan ke kluster.
Fitur StatefulSet
StatefulSet menyediakan fitur-fitur berikut:
|
Fitur |
Deskripsi |
|
Identitas Pod yang konsisten |
Menyediakan jaminan pengurutan (seperti urutan startup dan shutdown) serta identitas jaringan yang konsisten yang tetap melekat pada Pod terlepas dari penjadwalannya. |
|
Penyimpanan persisten yang stabil |
Membuat PV untuk setiap Pod menggunakan VolumeClaimTemplate. Penskalaan turun atau penghapusan replika tidak menghapus volume yang terkait. |
|
Identitas jaringan yang stabil |
|
|
Pengurutan yang stabil |
Untuk StatefulSet dengan N replika, StatefulSet memberikan setiap Pod indeks ordinal unik dalam rentang [0, N). |
Langkah-langkah
Langkah 1: Konfigurasikan informasi dasar aplikasi
-
Masuk ke Konsol ACS. Di panel navigasi kiri, klik Clusters.
-
Di halaman Clusters, klik nama kluster target. Di panel navigasi kiri, pilih Workloads > StatefulSets.
-
Di halaman StatefulSets, klik Create from Image.
-
Di halaman Basic Information, konfigurasikan aplikasi.
Parameter
Deskripsi
Application Name
Masukkan nama aplikasi.
Replicas:
Jumlah Pod untuk aplikasi. Default: 2.
Workloads
Pilih StatefulSets.
Labels
Label untuk mengidentifikasi aplikasi.
Annotations
Anotasi untuk aplikasi.
Instance type
Pilih jenis komputasi. Untuk detail tentang jenis komputasi, lihat Overview of ACS pod instances.
QoS Type
Pilih kelas Quality of Service (QoS).
-
Klik Next untuk membuka halaman Container.
Langkah 2: Konfigurasikan kontainer
Di halaman wizard Container, konfigurasikan gambar kontainer, sumber daya, port, variabel lingkungan, pemeriksaan kesehatan, siklus hidup, volume, dan pencatatan log.
Untuk menambahkan beberapa kontainer ke Pod, klik Add Container di sebelah tab Container 1.
-
Di bagian General, lengkapi konfigurasi dasar kontainer.
item konfigurasi
Deskripsi
Image Name
-
Pilih gambar
Klik Select Image untuk memilih gambar yang diperlukan.
-
Container Registry Enterprise Edition: Pilih gambar Edisi Perusahaan yang di-host di Alibaba Cloud Container Registry (ACR). Anda harus memilih wilayah dan instans ACR tempat gambar tersebut berada. Untuk informasi lebih lanjut tentang ACR, lihat What is Container Registry?.
-
Container Registry Personal Edition (harus diaktifkan terlebih dahulu): Pilih gambar Edisi Pribadi yang di-host di ACR. Anda harus memilih wilayah dan instans ACR tempat gambar tersebut berada.
-
Artifact center: Berisi citra OS dasar untuk aplikasi terkontainerisasi, citra runtime bahasa pemrograman, dan citra terkait AI/data besar. Contoh ini menggunakan citra Nginx dari Artifact Center. Untuk informasi lebih lanjut, lihat Artifact Center.
-
-
(Opsional) Atur kebijakan pull gambar
Dari daftar drop-down Image Pull Policy, pilih kebijakan pull. Secara default, tidak ada kebijakan yang ditetapkan, dan Kubernetes menggunakan IfNotPresent.
-
IfNotPresent: Jika gambar sudah ada secara lokal (sebelumnya ditarik ke host), gambar tidak akan ditarik lagi. Jika tidak, gambar akan ditarik.
-
Always: Selalu menarik gambar selama deployment atau scale-out, mengabaikan salinan lokal apa pun.
-
Never: Gunakan hanya gambar lokal.
-
-
(Opsional) Atur rahasia pull gambar
Klik Set Image Pull Secret untuk mengakses gambar privat secara aman.
-
Untuk instans ACR Edisi Pribadi, Anda dapat menarik gambar kontainer dengan mengatur rahasia pull gambar. Untuk informasi lebih lanjut, lihat Manage secrets.
-
Untuk instans ACR Edisi Perusahaan, Anda dapat menarik gambar tanpa kata sandi menggunakan komponen tanpa kata sandi. Untuk detailnya, lihat Pull ACR images without passwords.
-
Required Resources
Tetapkan kuota sumber daya untuk kontainer.
-
CPU: Tentukan nilai permintaan dan batas CPU. Secara default, permintaan sama dengan batas, dan penagihan menggunakan metode bayar sesuai penggunaan. Jika Anda menetapkan batas berbeda melalui YAML, permintaan akan ditimpa agar sesuai dengan batas. Untuk detailnya, lihat Resource specifications.
-
Memory: Tentukan nilai permintaan dan batas memori. Secara default, permintaan sama dengan batas, dan penagihan menggunakan metode bayar sesuai penggunaan. Jika Anda menetapkan batas berbeda melalui YAML, permintaan akan ditimpa agar sesuai dengan batas. Untuk detailnya, lihat Resource specifications.
Interactive Session
(Opsional) Konfigurasikan opsi startup kontainer.
-
stdin: Kirim input konsol ke kontainer.
-
tty: Sambungkan konsol input standar sebagai input konsol kontainer.
CatatanUmumnya, stdin dan tty dipilih bersamaan untuk mengikat terminal (tty) ke input standar (stdin) kontainer. Misalnya, program interaktif membaca input pengguna dari stdin dan menampilkan output di terminal.
Init Containers
(Opsional) Aktifkan opsi ini untuk membuat init container.
Init container menyediakan mekanisme untuk memblokir atau menunda startup kontainer aplikasi hingga berhasil. Setelah eksekusi berhasil, kontainer aplikasi dalam Pod dimulai secara paralel. Misalnya, Anda dapat menggunakan init container untuk memeriksa ketersediaan layanan dependensi. Init container juga dapat mencakup utilitas atau skrip instalasi yang tidak tersedia dalam gambar aplikasi guna menginisialisasi lingkungan runtime—seperti mengatur parameter kernel atau menghasilkan file konfigurasi. Untuk informasi lebih lanjut, lihat Init Containers.
-
-
(Opsional) Di bagian Ports, klik Add untuk mengonfigurasi port kontainer.
item konfigurasi
Deskripsi
Name
Tentukan nama untuk port kontainer.
Container Port
Tentukan port kontainer yang diekspos. Nomor port harus berada dalam rentang 1 hingga 65535.
Protocol
Protokol yang didukung adalah TCP dan UDP.
-
(Opsional) Di bagian Environments, klik Add untuk mengonfigurasi variabel lingkungan.
Anda dapat mengonfigurasi variabel lingkungan untuk Pod menggunakan pasangan kunci-nilai untuk menambahkan flag lingkungan atau meneruskan konfigurasi. Untuk informasi lebih lanjut, lihat Pod Environment Variables.
Parameter
Deskripsi
Type
Tentukan tipe variabel lingkungan:
-
Custom
-
ConfigMaps
-
Secrets
-
Value/ValueFrom
-
ResourceFieldRef
ConfigMap dan Secret mendukung referensi seluruh file.
Contoh ini menggunakan Secret. Saat Anda memilih tipe Secrets dan memilih Secret target, semua file dalam Secret tersebut direferensikan secara default. Setelah memilih Secret, masukkan Variable Name dan pilih nama Secret serta kunci yang sesuai dari dua daftar drop-down di sebelah kanan.
YAML berikut mereferensikan seluruh Secret:
envFrom: - secretRef: name: testVariable Key
Tentukan nama variabel lingkungan.
Value/ValueFrom
Tentukan nilai variabel yang direferensikan.
-
-
(Opsional) Di bagian Health Check, aktifkan Liveness, Readiness, dan Startup sesuai kebutuhan.
-
Liveness probe: Pemeriksaan kelangsungan hidup memeriksa apakah kontainer sedang berjalan. Jika pemeriksaan gagal beberapa kali, kubelet akan me-restart kontainer. Ini dapat membantu mengatasi masalah seperti deadlock di mana kontainer berjalan tetapi tidak dapat melanjutkan proses.
-
Readiness probe: Pemeriksaan kesiapan memeriksa apakah kontainer siap menerima traffic. Pod hanya ditambahkan sebagai backend ke Service setelah pemeriksaan kesiapannya berhasil.
-
Startup Probes: Pemeriksaan ini hanya dijalankan saat kontainer dimulai untuk memeriksa apakah telah berhasil dimulai. Liveness Probes dan Readiness Probes hanya dijalankan setelah pemeriksaan startup berhasil.
Untuk informasi lebih lanjut, lihat Configure liveness, readiness, and startup probes.
Parameter
Deskripsi
HTTP
Mengirim permintaan HTTP GET ke kontainer. Parameter yang didukung meliputi:
-
Protocol: HTTP atau HTTPS.
-
Path: Jalur untuk mengakses server HTTP.
-
Port: Port kontainer yang diekspos atau nama port. Nomor port harus berada dalam rentang 1 hingga 65535.
-
HTTP Header: Header permintaan kustom dalam permintaan HTTP. HTTP memungkinkan header duplikat. Konfigurasikan sebagai pasangan kunci-nilai.
-
Initial Delay (s): Parameter initialDelaySeconds menentukan jumlah detik yang ditunggu setelah kontainer dimulai sebelum pemeriksaan pertama dilakukan. Nilai default adalah 3 detik.
-
Period (s): Parameter periodSeconds menentukan interval antar pemeriksaan. Nilai default adalah 10 detik, dengan nilai minimum 1 detik.
-
Timeout (s): Parameter timeoutSeconds menentukan durasi timeout untuk setiap pemeriksaan. Nilai default adalah 1 detik, dengan nilai minimum 1 detik.
-
Healthy Threshold: Jumlah minimum pemeriksaan berturut-turut yang berhasil setelah kegagalan untuk menandai kontainer sebagai sehat. Nilai default adalah 1, dengan nilai minimum 1. Untuk liveness probe, nilai ini harus 1.
-
Unhealthy Threshold: Jumlah minimum pemeriksaan berturut-turut yang gagal setelah keberhasilan untuk menandai kontainer sebagai tidak sehat. Nilai default adalah 3, dengan nilai minimum 1.
TCP
Membuka soket TCP ke kontainer. Kubelet mencoba membuka soket pada port yang ditentukan. Jika berhasil, kontainer dianggap sehat; jika tidak, ditandai sebagai gagal. Parameter yang didukung meliputi:
-
Port: Port kontainer yang diekspos atau nama port. Nomor port harus berada dalam rentang 1 hingga 65535.
-
Initial Delay (s): Parameter initialDelaySeconds menentukan jumlah detik yang ditunggu setelah kontainer dimulai sebelum pemeriksaan pertama dilakukan. Nilai default adalah 15 detik.
-
Period (s): Parameter periodSeconds menentukan interval antar pemeriksaan. Nilai default adalah 10 detik, dengan nilai minimum 1 detik.
-
Timeout (s): Parameter timeoutSeconds menentukan durasi timeout untuk setiap pemeriksaan. Nilai default adalah 1 detik, dengan nilai minimum 1 detik.
-
Healthy Threshold: Jumlah minimum pemeriksaan berturut-turut yang berhasil setelah kegagalan untuk menandai kontainer sebagai sehat. Nilai default adalah 1, dengan nilai minimum 1. Untuk liveness probe, nilai ini harus 1.
-
Unhealthy Threshold: Jumlah minimum pemeriksaan berturut-turut yang gagal setelah keberhasilan untuk menandai kontainer sebagai tidak sehat. Nilai default adalah 3, dengan nilai minimum 1.
Command
Menjalankan perintah di dalam kontainer untuk memeriksa kesehatannya. Parameter yang didukung meliputi:
-
Command: Perintah yang digunakan untuk memeriksa kesehatan kontainer.
-
Initial Delay (s): Parameter initialDelaySeconds menentukan jumlah detik yang ditunggu setelah kontainer dimulai sebelum pemeriksaan pertama dilakukan. Nilai default adalah 5 detik.
-
Period (s): Parameter periodSeconds menentukan interval antar pemeriksaan. Nilai default adalah 10 detik, dengan nilai minimum 1 detik.
-
Timeout (s): Parameter timeoutSeconds menentukan durasi timeout untuk setiap pemeriksaan. Nilai default adalah 1 detik, dengan nilai minimum 1 detik.
-
Healthy Threshold: Jumlah minimum pemeriksaan berturut-turut yang berhasil setelah kegagalan untuk menandai kontainer sebagai sehat. Nilai default adalah 1, dengan nilai minimum 1. Untuk liveness probe, nilai ini harus 1.
-
Unhealthy Threshold: Jumlah minimum pemeriksaan berturut-turut yang gagal setelah keberhasilan untuk menandai kontainer sebagai tidak sehat. Nilai default adalah 3, dengan nilai minimum 1.
-
-
(Opsional) Di bagian Lifecycle, konfigurasikan siklus hidup kontainer.
Anda dapat mengonfigurasi perintah pra-mulai, penanganan pasca-mulai, dan penanganan pra-henti untuk siklus hidup kontainer. Untuk detailnya, lihat Configure lifecycle.
Parameter
Deskripsi
Start
Tentukan perintah beserta argumennya yang akan dijalankan sebelum kontainer dimulai.
Post-start Hook
Tentukan perintah yang akan dijalankan setelah kontainer dimulai.
Pre-stop Hook
Tentukan perintah yang akan dijalankan sebelum kontainer dihentikan.
-
(Opsional) Di bagian Volume, pasang volume ke kontainer.
-
Penyimpanan lokal: Pasang ConfigMap, Secret, atau direktori sementara ke jalur kontainer. Untuk informasi lebih lanjut, lihat volumes.
-
Penyimpanan cloud: Mendukung disk cloud, NAS, dan lainnya. Untuk detailnya, lihat Storage overview.
-
-
(Opsional) Di bagian Log, konfigurasikan Collection Configuration dan Custom Tag.
Parameter
Deskripsi
Collection Settings
-
Logstore: Membuat Logstore yang sesuai di Simple Log Service untuk menyimpan log yang dikumpulkan.
-
Log Path in Container (Can be set to stdout): Mendukung stdout dan log teks.
-
Stdout: Mengumpulkan log output standar dari kontainer.
-
Log teks: Mengumpulkan log dari jalur tertentu di dalam kontainer. Contoh ini mengumpulkan semua log teks di bawah
/var/log/nginxdan mendukung karakter wildcard.
-
Custom Tags
Anda juga dapat menetapkan tag kustom. Saat dikonfigurasi, tag tersebut disertakan bersama log kontainer dan membantu mengkategorikan log untuk mempermudah statistik serta penyaringan selama analisis.
-
-
Klik Next untuk menuju wizard Advanced.
Langkah 3: Lengkapi konfigurasi lanjutan
Di halaman wizard Advanced, konfigurasikan kontrol akses, penskalaan, penjadwalan, serta label/anotasi.
-
Di bagian Access Control, konfigurasikan cara mengekspos Pod backend.
Contoh ini menggunakan ClusterIP dan Ingress untuk membuat aplikasi Nginx yang dapat diakses publik.
-
Konfigurasikan Service: Klik Create di sebelah Services untuk mengatur parameter layanan.
-
Konfigurasikan Ingress: Klik Create di sebelah Ingresses untuk mengatur aturan routing untuk Pod backend.
-
-
(Opsional) Di bagian Scaling, aktifkan HPA untuk memenuhi permintaan beban yang bervariasi.
-
Container Compute Service mendukung autoscaling berdasarkan penggunaan CPU dan memori Pod.
CatatanUntuk mengaktifkan autoscaling, Anda harus menentukan sumber daya yang diminta untuk kontainer. Jika tidak, autoscaling tidak akan berfungsi.
item konfigurasi
Deskripsi
Metric
Mendukung CPU dan memori. Nilai ini harus sesuai dengan jenis sumber daya yang diminta.
Trigger Condition
Ambang batas persentase penggunaan sumber daya. Saat ambang ini terlampaui, sistem akan melakukan scale-out.
Max. Replicas
Jumlah maksimum replika kontainer yang dapat di-scale-out untuk tipe muatan ini.
Min. Replicas
Batas bawah jumlah replika untuk scaling pada workload ini.
-
Container Compute Service juga mendukung penskalaan terjadwal (CronHPA) untuk secara otomatis menskala kluster Kubernetes pada waktu tertentu. Sebelum mengaktifkan penskalaan terjadwal, instal komponen ack-kubernetes-cronhpa-controller. Untuk detailnya, lihat Scheduled scaling (CronHPA).
-
-
(Opsional) Di bagian Labels,Annotations, klik Add untuk menetapkan label dan anotasi Pod.
-
Klik Create.
Langkah 4: Lihat aplikasi
Setelah pembuatan, halaman konfirmasi ditampilkan. Klik View Details untuk membuka halaman detail StatefulSet.
Atau, di halaman Deployments, klik nama StatefulSet atau klik Details di kolom Actions.