全部产品
Search
文档中心

Container Compute Service:Gunakan StatefulSet untuk Membuat Aplikasi Stateful

更新时间:Jul 02, 2025

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 hostname dari nama StatefulSet dan ordinal pod. Pola hostname adalah Nama StatefulSet-pod ordinal.

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

  1. Masuk ke konsol ACS. Di panel navigasi sisi kiri, klik Clusters.

  2. Di halaman Clusters, temukan kluster yang ingin Anda kelola dan klik ID-nya. Di panel navigasi sisi kiri halaman detail kluster, pilih Workloads > StatefulSets.

  3. Di halaman StatefulSets, klik Create from Image.

  4. 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.

  5. 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.

Catatan

Klik Add Container di sebelah kanan tab Container1 untuk menambahkan lebih banyak kontainer.

  1. 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.

    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.

    Catatan

    stdin 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.

  2. 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.

  3. 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. yaml

    Variable Key

    Nama variabel lingkungan.

    Value/ValueFrom

    Nilai variabel lingkungan.

  4. 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.

  5. 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.

  6. 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.

  7. 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/nginx ditentukan 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.

  8. 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.

  1. 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.

      Lihat Parameter Service

      Parameter

      Deskripsi

      Name

      Nama Service. Dalam contoh ini, nginx-svc digunakan.

      Status

      Jenis Service. Parameter ini menentukan cara Service diakses. Cluster IP dipilih dalam contoh ini.

      • Cluster IP: Service tipe ClusterIP. Jenis Service ini memaparkan Service melalui alamat IP internal kluster. Jika Anda memilih opsi ini, Service hanya dapat diakses di dalam kluster. Ini adalah nilai default.

        Catatan

        Parameter Headless Service hanya tersedia jika Anda menyetel Tipe ke Cluster IP.

      • Server Load Balancer: Service tipe LoadBalancer. Jenis Service ini memaparkan Service dengan menggunakan instance Server Load Balancer (SLB). Jika Anda memilih jenis ini, Anda dapat mengaktifkan akses internal atau eksternal ke Service. Instance SLB dapat digunakan untuk merutekan permintaan ke Service ClusterIP.

        • Buat Instance SLB: Anda dapat mengklik Modify untuk mengubah spesifikasi instance SLB.

        • Gunakan Instance SLB yang Ada: Pilih tipe instance SLB dari daftar.

        Catatan

        Anda dapat membuat instance SLB atau menggunakan instance SLB yang ada. Anda juga dapat mengaitkan instance SLB dengan beberapa Service. Namun, Anda harus memperhatikan batasan berikut:

        • Jika Anda menggunakan instance SLB yang ada, pendengar instance SLB menimpa pendengar Service.

        • Jika instance SLB dibuat bersamaan dengan Service, Anda tidak dapat menggunakan kembali instance SLB ini saat membuat Service lain. Jika tidak, instance SLB mungkin dihapus. Hanya instance SLB yang dibuat secara manual di konsol atau dengan memanggil API yang dapat digunakan untuk memaparkan beberapa Service.

        • Service yang berbagi instance SLB yang sama harus menggunakan port pendengar frontend yang berbeda. Jika tidak, konflik port mungkin terjadi.

        • Jika beberapa Service berbagi instance SLB yang sama, Anda harus menggunakan nama pendengar dan nama grup vServer sebagai pengidentifikasi unik di Kubernetes. Jangan ubah nama pendengar atau grup vServer.

        • Anda tidak dapat berbagi instance SLB di seluruh kluster.

      Port Mapping

      Tentukan port Service dan port kontainer. Port kontainer harus sama dengan yang dipaparkan di pod backend.

      External Traffic Policy

      • Local: Trafik hanya diarahkan ke pod pada node tempat ingress gateway diterapkan.

      • Cluster: Kebijakan ini dapat mengarahkan lalu lintas ke pod di node lain.

      Catatan

      Parameter External Traffic Policy hanya tersedia jika Anda menyetel Tipe ke Server Load Balancer.

      Annotations

      Tambahkan satu atau lebih anotasi ke instance SLB. Sebagai contoh, service.beta.kubernetes.io/alicloud-loadbalancer-bandwidth:20 menentukan bahwa bandwidth maksimum Service adalah 20 Mbit/s. Ini membatasi jumlah lalu lintas yang mengalir melalui Service.

      Labels

      Label yang akan ditambahkan ke Service, yang mengidentifikasi Service.

    • Untuk membuat Ingress, klik Create di sisi kanan Ingresses. Di kotak dialog Buat, atur parameter.

      Lihat Parameter Ingress

      Catatan

      Saat membuat aplikasi dari gambar, Anda hanya dapat membuat Ingress untuk satu Service. Dalam contoh ini, nama host virtual digunakan sebagai nama domain uji. Tambahkan aturan pemetaan berikut ke file hosts untuk memetakan nama domain ke alamat IP Ingress. Entri dalam format <Titik Akhir Eksternal Ingress> + <Nama Domain Ingress>. Dalam skenario nyata, gunakan nama domain yang memiliki nomor Penyedia Konten Internet (ICP).

      101.37.xx.xx   foo.bar.com    # Alamat IP Ingress.

      Parameter

      Deskripsi

      Name

      Nama Ingress. Dalam contoh ini, alb-ingress digunakan.

      Rule

      Aturan Ingress digunakan untuk mengaktifkan akses ke Service tertentu dalam kluster. Untuk informasi lebih lanjut, lihat Memulai dengan ALB Ingress.

      • Domain: Masukkan nama domain Ingress.

      • Path: Masukkan URL Service. Path default adalah path root /. Path default digunakan dalam contoh ini. Setiap path dikaitkan dengan Service backend. SLB hanya merutekan lalu lintas ke Service backend jika permintaan masuk sesuai dengan nama domain dan path.

      • Service: Pilih Service dan port Service yang diinginkan.

      • TLS Settings: Pilih kotak centang ini untuk mengaktifkan TLS.

      Nama domain uji foo.bar.com digunakan dalam contoh ini. Service nginx-svc diatur sebagai backend Ingress.

      Canary Release

      Aktifkan atau nonaktifkan fitur rilis canary. Kami sarankan Anda memilih Open Source Solution karena fitur rilis canary yang disediakan oleh Alibaba Cloud telah dihentikan.

      Ingress Class

      Tentukan kelas Ingress.

      Annotations

      Anda dapat menambahkan anotasi kustom atau memilih anotasi yang ada. Klik Add dan masukkan kunci dan nilai. Untuk informasi lebih lanjut tentang anotasi Ingress, lihat Anotasi.

      Labels

      Klik +Add untuk menambahkan label dalam pasangan kunci-nilai ke Ingress untuk mengidentifikasi Ingress.

  2. 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.

      Catatan

      Untuk 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.

  1. Opsional: Di bagian Labels,Annotations, klik Add untuk menambahkan label dan anotasi pod.

  2. 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.