All Products
Search
Document Center

Container Compute Service:Konfigurasikan Urutan Startup dan Shutdown Kontainer Sidecar

Last Updated:Nov 10, 2025

Saat menggunakan kontainer Sidecar untuk mengimplementasikan fungsionalitas mirip DaemonSet guna menyediakan layanan atau fitur tambahan (seperti logging, pemantauan, keamanan, atau pengalihan lalu lintas), Anda perlu mengontrol urutan startup dan shutdown kontainer Sidecar relatif terhadap kontainer aplikasi utama. Topik ini menjelaskan cara mengonfigurasi urutan startup dan shutdown kontainer Sidecar.

Deskripsi fitur

Dalam skenario ACS, karena keterbatasan node virtual, fungsionalitas Kubernetes DaemonSet tidak didukung. Dalam kasus-kasus ini, skenario yang memerlukan DaemonSet dapat mencapai efek serupa dengan menambahkan kontainer Sidecar ke Pod. Namun, siklus hidup kontainer Sidecar tidak bisa independen dari siklus hidup Pod. Untuk mencapai efek serupa dengan DaemonSet, Anda perlu mengonfigurasi urutan startup dan shutdown kontainer Sidecar. Ini memastikan bahwa kontainer Sidecar mulai sebelum kontainer aplikasi utama ketika sebuah Pod dibuat, dan bahwa kontainer Sidecar dipaksa dihentikan ketika kontainer aplikasi dalam Pod tipe job sudah keluar.

Untuk skenario-skenario ini, ACS mendukung konfigurasi urutan startup dan shutdown kontainer Sidecar dalam dua cara:

  • Deklarasi Sidecar Kubernetes Natif

    Pada Kubernetes versi 1.29 dan yang lebih baru, deklarasi Sidecar asli didukung secara default. Ini melibatkan konfigurasi Sidecar sebagai kontainer Init dan menyetel restartPolicy menjadi Always.

    Catatan

    Metode Sidecar asli mengimplementasikan kontainer Sidecar sebagai kontainer Init khusus. Ketika sebuah Pod dimulai, kontainer aplikasi harus menunggu kontainer Sidecar menyelesaikan startup sebelum mereka dapat berjalan normal. Pada saat yang sama, konfigurasi restartPolicy: Always memungkinkan kontainer Sidecar untuk mulai, berhenti, dan memulai ulang tanpa memengaruhi kontainer aplikasi utama dan kontainer Init lainnya.

  • ACS Customs Declaration

    Untuk Kubernetes versi 1.28 dan yang lebih lama, ACS mendukung penyetelan variabel lingkungan khusus __IS_SIDECAR__ untuk kontainer biasa untuk menandai apakah kontainer tersebut adalah Sidecar.

    Penting

    Metode deklarasi kustom ACS mendukung deklarasi kontainer biasa sebagai Sidecar, yang mulai sebelum kontainer biasa lainnya dan otomatis mencoba ulang sesuai prinsip restartPolicy disetel ke Always. Pada saat yang sama, kluster ACS telah membuat penyesuaian kompatibilitas untuk versi Kubernetes yang lebih rendah (1.28 dan yang lebih lama) untuk memastikan status kontainer dapat diperbarui.

    Namun, pada versi yang lebih tinggi atau jenis kluster Kubernetes lainnya, karena keterbatasan Kubernetes pada pembaruan status kontainer, containerStatus dan status pod dari kontainer Sidecar yang dideklarasikan secara kustom oleh ACS tidak akan diperbarui ke Running setelah percobaan ulang gagal. Silakan merujuk pada status pod aktual. Disarankan agar Anda meningkatkan kluster Anda ke versi 1.29 atau yang lebih baru dan menggunakan metode deklarasi Sidecar Kubernetes asli.

Instruksi konfigurasi

Metode Konfigurasi

Pod Field/Environment Variable Name

Deskripsi konfigurasi

Deklarasi Sidecar Kubernetes asli

Bidang restartPolicy dari kontainer Init

  • Never: Menunjukkan bahwa tipe kontainer adalah kontainer Init biasa. Nilai default adalah Never.

  • Always: Menunjukkan bahwa tipe kontainer adalah kontainer Sidecar.

Deklarasi kustom ACS

Variabel lingkungan kontainer biasa: __IS_SIDECAR__

  • true: Menunjukkan bahwa tipe kontainer adalah kontainer Sidecar.

  • false: Menunjukkan bahwa tipe kontainer adalah kontainer biasa. Nilai default adalah false.

Contoh konfigurasi

  1. Contoh isi test-sidecar.yaml adalah sebagai berikut, yang menunjukkan pembuatan Job yang berisi dua kontainer: app adalah kontainer aplikasi dan sidecar adalah kontainer Sidecar.

    Deklarasi kustom ACS

    apiVersion: batch/v1
    kind: Job
    metadata:
      name: test
    spec:
      template:
        metadata:
          labels:
            app: test
        spec:
          containers:
          - name: app
            image: registry-cn-hangzhou.ack.aliyuncs.com/ack-demo/busybox:1.28
            command: ['sh', '-c', 'for i in $(seq 1 10);do echo "logging" >> /var/logs.txt; sleep 1; done']
          - name: sidecar
            image: registry-cn-hangzhou.ack.aliyuncs.com/ack-demo/busybox:1.28
            command: ['sh', '-c', 'touch /var/logs.txt && tail -F /var/logs.txt']
            env:
            - name: __IS_SIDECAR__   # Set variabel lingkungan untuk kontainer ini
              value: "true"          # Tandai kontainer ini sebagai sidecar
          restartPolicy: Never
      backoffLimit: 2

    Deklarasi Sidecar Kubernetes asli

    apiVersion: batch/v1
    kind: Job
    metadata:
      name: test
    spec:
      template:
        metadata:
          labels:
            app: test
        spec:
          initContainers:
          - name: sidecar
            image: registry-cn-hangzhou.ack.aliyuncs.com/ack-demo/busybox:1.28
            command: ['sh', '-c', 'touch /var/logs.txt && tail -F /var/logs.txt']
            restartPolicy: Always  # Deklarasikan kontainer ini sebagai sidecar
          containers:
          - name: app
            image: registry-cn-hangzhou.ack.aliyuncs.com/ack-demo/busybox:1.28
            command: ['sh', '-c', 'for i in $(seq 1 10);do echo "logging" >> /var/logs.txt; sleep 1; done']
          restartPolicy: Never
      backoffLimit: 2
  2. Jalankan perintah berikut untuk membuat Job.

    kubectl apply -f test-sidecar.yaml
  3. Lihat detail Job dan detail Pod yang sesuai untuk mengamati efek dari variabel lingkungan.

    • Konfirmasikan bahwa Job telah selesai dijalankan dan statusnya adalah Succeeded.

      kubectl describe job <job-name>

      Contoh sebagai berikut:

      image

  4. Lihat detail kontainer Sidecar untuk mengamati urutan startup kontainer dan kode keluar aktual

    kubectl describe pod <pod-name>
    • Contoh urutan startup kontainer adalah sebagai berikut. Anda dapat melihat bahwa kontainer sidecar mulai sebelum kontainer app, memastikan bahwa fungsionalitas sidecar (seperti pengalihan lalu lintas) yang bergantung pada kontainer aplikasi utama siap sebelumnya. Selain itu, Anda dapat melihat bahwa setelah kontainer app selesai berjalan (setelah 10 detik), kontainer sidecar akan dipaksa dihentikan, memastikan bahwa pod job dapat selesai:

      image

    • Contoh kode keluar adalah sebagai berikut. Anda dapat melihat bahwa kontainer sidecar dipaksa keluar dengan kode keluar 0, memastikan bahwa itu tidak mengganggu penentuan apakah pod job berhasil atau gagal.

      image