All Products
Search
Document Center

Container Compute Service:Buat StatefulSet

Last Updated:Jun 09, 2026

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

hostname Pod mengikuti pola: (nama StatefulSet)-(indeks ordinal).

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

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

  2. Di halaman Clusters, klik nama kluster target. Di panel navigasi kiri, pilih Workloads > StatefulSets.

  3. Di halaman StatefulSets, klik Create from Image.

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

    Korespondensi Antara Kelas Komputasi dan Kualitas Daya Komputasi

    Compute class

    Supported QoS class

    general-purpose (general-purpose)

    default (default), best-effort (best-effort)

    performance (performance)

    default (default), best-effort (best-effort)

    GPU-accelerated (gpu)

    default (default), best-effort (best-effort)

    GPU-HPN (gpu-hpn)

    default (default)

    Untuk informasi lebih lanjut, lihat QoS class definitions.

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

Catatan

Untuk menambahkan beberapa kontainer ke Pod, klik Add Container di sebelah tab Container 1.

  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.

    Catatan

    Umumnya, 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.

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

  3. (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: test

    Variable Key

    Tentukan nama variabel lingkungan.

    Value/ValueFrom

    Tentukan nilai variabel yang direferensikan.

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

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

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

  7. (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/nginx dan 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.

  8. Klik Next untuk menuju wizard Advanced.

Langkah 3: Lengkapi konfigurasi lanjutan

Di halaman wizard Advanced, konfigurasikan kontrol akses, penskalaan, penjadwalan, serta label/anotasi.

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

      Expand to view service configuration details

      item konfigurasi

      Deskripsi

      Name

      Masukkan nama layanan. Contoh ini menggunakan nginx-svc.

      Type

      Pilih tipe layanan, yang menentukan cara layanan diakses. Contoh ini memilih Cluster IP.

      • Cluster IP: Mengekspos layanan pada IP internal dalam kluster. Layanan jenis ini hanya dapat diakses dari dalam kluster dan merupakan ServiceType default.

        Catatan

        Saat tipe layanan adalah Cluster IP, Anda dapat mengonfigurasi Headless Service.

      • Server Load Balancer: Menggunakan Alibaba Cloud Server Load Balancer (SLB) untuk mengekspos layanan. Anda dapat memilih akses publik atau akses internal. SLB Alibaba Cloud mengarahkan lalu lintas ke layanan ClusterIP.

        • Buat SLB baru: Klik Modify untuk mengubah spesifikasi SLB.

        • Gunakan SLB yang ada: Pilih instans SLB dari daftar.

        Catatan

        Tipe LoadBalancer mendukung pembuatan SLB baru atau penggunaan ulang SLB yang ada, tetapi dengan batasan berikut:

        • Menggunakan instans SLB yang ada akan menimpa listener-nya saat ini.

        • Instans SLB yang dibuat oleh Kubernetes melalui Services tidak dapat digunakan ulang (untuk mencegah penghapusan tidak disengaja). Hanya instans SLB yang dibuat secara manual di konsol (atau melalui OpenAPI) yang dapat digunakan ulang.

        • Beberapa Services yang menggunakan ulang SLB yang sama tidak boleh berbagi port listener frontend yang sama untuk menghindari konflik.

        • Saat menggunakan ulang SLB, Kubernetes menggunakan nama listener dan nama kelompok vServer sebagai pengenal unik. Jangan ubah nama-nama ini.

        • Penggunaan ulang SLB lintas kluster tidak didukung.

      Port Mapping

      Tambahkan port layanan dan port kontainer. Port kontainer harus sesuai dengan port yang diekspos oleh Pod backend.

      External Traffic Policy

      • Local: Mengarahkan lalu lintas hanya ke Pod pada node yang sama.

      • Cluster: Mengarahkan lalu lintas ke Pod pada node mana pun.

      Catatan

      Anda dapat menetapkan External Traffic Policy hanya ketika tipe layanan adalah Server Load Balancer.

      Annotations

      Tambahkan anotasi untuk mengonfigurasi parameter SLB. Misalnya, menetapkan service.beta.kubernetes.io/alicloud-loadbalancer-bandwidth: 20 membatasi bandwidth layanan menjadi 20 Mbit/s untuk mengontrol lalu lintas.

      Label

      Tambahkan label untuk mengidentifikasi layanan ini.

    • Konfigurasikan Ingress: Klik Create di sebelah Ingresses untuk mengatur aturan routing untuk Pod backend.

      Expand to view Ingress configuration details

      Catatan

      Saat membuat aplikasi dari gambar, Anda hanya dapat membuat satu Ingress per layanan. Contoh ini menggunakan hostname virtual sebagai domain uji. Tambahkan pemetaan domain (titik akhir Ingress + domain Ingress) ke file Hosts Anda. Di produksi, gunakan domain yang telah terdaftar ICP.

      101.37.XX.XX   foo.bar.com    # Ingress IP.

      Parameter

      Deskripsi

      Name

      Masukkan nama Ingress. Contoh ini menggunakan alb-ingress.

      Rule

      Aturan Ingress mendefinisikan cara lalu lintas masuk mencapai layanan kluster. Untuk informasi lebih lanjut, lihat ALB Ingress Quick Start.

      • Domain Name: Masukkan domain Ingress.

      • Path: Tentukan jalur URL untuk mengakses layanan. Nilai default adalah jalur root /. Setiap jalur dipetakan ke layanan backend. SLB Alibaba Cloud hanya meneruskan lalu lintas jika permintaan masuk cocok dengan domain dan jalur tersebut.

      • Services: Pilih nama layanan dan port-nya.

      • TLS: Konfigurasikan routing aman.

      Contoh ini menggunakan domain uji foo.bar.com dan menetapkan layanan ke nginx-svc.

      Canary Release

      Aktifkan rilis canary. Disarankan memilih Open Source Solution karena edisi Alibaba Cloud tidak lagi dipelihara.

      Ingress Class

      Tentukan kelas Ingress kustom.

      Annotations

      Definisikan pasangan kunci-nilai anotasi kustom, atau cari anotasi berdasarkan nama. Klik Add untuk memasukkan pasangan kunci-nilai anotasi. Untuk daftar anotasi Ingress, lihat Annotations.

      Label

      Klik Add untuk memasukkan kunci dan nilai label yang mengidentifikasi karakteristik Ingress ini.

  2. (Opsional) Di bagian Scaling, aktifkan HPA untuk memenuhi permintaan beban yang bervariasi.

    • Container Compute Service mendukung autoscaling berdasarkan penggunaan CPU dan memori Pod.

      Catatan

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

  1. (Opsional) Di bagian Labels,Annotations, klik Add untuk menetapkan label dan anotasi Pod.

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