All Products
Search
Document Center

Elastic Container Instance:Konfigurasikan prioritas startup dan keluar kontainer

Last Updated:Jun 29, 2025

Topik ini menjelaskan cara mengonfigurasi prioritas startup dan keluar kontainer dalam pod berbasis Elastic Container Instance (kontainer elastis). Dengan konfigurasi ini, kontainer akan mulai dan keluar secara berurutan.

Deskripsi fitur

Secara default, kontainer dalam Elastic Container Instance mulai dan keluar secara bersamaan. Namun, dalam beberapa skenario, kontainer dalam suatu instance mungkin memiliki hubungan ketergantungan. Sebagai contoh, sebuah kontainer harus mulai setelah kontainer lainnya siap, atau sebuah kontainer harus keluar setelah kontainer lainnya selesai. Contohnya:

  • Dalam skenario tata kelola layanan Istio, kontainer istio-proxy harus siap sebelum transfer data dihasilkan pada kontainer aplikasi, dan kontainer istio-proxy hanya dapat keluar setelah kontainer aplikasi selesai.

  • Dalam skenario pengumpulan log, kontainer log harus siap sebelum log dihasilkan pada kontainer aplikasi, dan kontainer log hanya dapat keluar setelah kontainer aplikasi selesai.

Untuk skenario seperti itu, Elastic Container Instance memungkinkan Anda mengonfigurasi prioritas startup dan keluar untuk kontainer menggunakan variabel lingkungan. Anda dapat menambahkan variabel lingkungan sesuai kebutuhan bisnis untuk memastikan bahwa kontainer mulai atau keluar secara berurutan.

Deskripsi konfigurasi

Tabel berikut menjelaskan variabel lingkungan yang digunakan untuk mengonfigurasi prioritas startup dan keluar kontainer:

Item

Nama variabel lingkungan

Deskripsi

Prioritas startup kontainer

ECI_CONTAINER_LAUNCH_PRIORITY

  • Nilai valid: -1000 hingga 1000. Nilai default: 0. Semakin besar nilai, semakin tinggi prioritas startup.

  • Kontainer dengan prioritas lebih tinggi dijamin mulai sebelum kontainer dengan prioritas lebih rendah mulai. Kontainer dengan prioritas sama tidak dijamin mulai secara berurutan, dan mereka mulai secara bersamaan.

  • Jika sebuah kontainer bergantung pada kontainer lain untuk menyediakan layanan, Anda harus mengonfigurasi readiness probe untuk kontainer lain tersebut. Misalnya, jika Kontainer B bergantung pada Kontainer A untuk menyediakan layanan, Anda harus mengonfigurasi prioritas startup yang lebih tinggi dan readiness probe untuk Kontainer A untuk memastikan bahwa Kontainer B hanya dapat mulai setelah Kontainer A siap.

Prioritas keluar kontainer

ECI_CONTAINER_EXIT_PRIORITY

  • Nilai valid: -1000 hingga 1000. Nilai default: 0. Semakin besar nilai, semakin tinggi prioritas keluar.

  • Kontainer dengan prioritas lebih tinggi dijamin keluar sebelum kontainer dengan prioritas lebih rendah keluar. Kontainer dengan prioritas sama tidak dijamin keluar secara berurutan, dan mereka keluar secara bersamaan.

Penting

Setelah mengonfigurasi urutan keluar kontainer, durasi penghapusan pod mungkin lebih lama daripada durasi yang ditentukan oleh TerminationGracePeriodSeconds dalam spesifikasi pod.

Contoh konfigurasi

Konfigurasikan prioritas startup kontainer

  1. Buat file konfigurasi YAML untuk aplikasi, lalu gunakan file tersebut untuk membuat Deployment.

    kubectl apply -f test-launch.yaml

    Contoh berikut, test-launch.yaml, menunjukkan konfigurasi untuk membuat Deployment dengan satu replika pod. Pod tersebut berisi dua kontainer: c1 dan c2. Kontainer c1 memiliki prioritas startup lebih tinggi daripada c2 dan dikonfigurasi dengan readiness probe. Dalam hal ini, kontainer c2 hanya mulai setelah kontainer c1 siap.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: test-launch
      labels:
        app: test
    spec:
      replicas: 1 
      selector:
        matchLabels:
          app: test
      template:
        metadata:
          labels:
            app: test
        spec:
          containers:
          - image: registry-vpc.cn-shanghai.aliyuncs.com/eci_open/nginx:alpine
            name: c1
            env:
            - name: ECI_CONTAINER_LAUNCH_PRIORITY
              value: "1000"
            readinessProbe:                  
              httpGet:
                path: /
                port: 80
              initialDelaySeconds: 30     
              periodSeconds: 3
          - image: registry-vpc.cn-shanghai.aliyuncs.com/eci_open/nginx:alpine
            name: c2
            env:
            - name: ECI_CONTAINER_LAUNCH_PRIORITY
              value: "0"
            args:
            - /bin/sh
            - -c
            - sleep 3600s
  2. Amati waktu mulai setiap kontainer dalam status pod.

    kubectl describe pod <pod name>

    Bagian Containers dari respons menunjukkan bahwa waktu mulai kontainer c2 lebih lambat daripada waktu mulai kontainer c1. Contoh respons:

    容器启动k8s.png

Konfigurasikan prioritas keluar kontainer

  1. Buat file konfigurasi YAML untuk aplikasi, lalu gunakan file tersebut untuk membuat Deployment.

    kubectl apply -f test-exit.yaml

    Contoh berikut, test-exit.yaml, menunjukkan konfigurasi untuk membuat Deployment dengan satu replika pod. Pod tersebut berisi tiga kontainer: c1, c2, dan c3, dengan prioritas keluar menurun.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: test-exit
      labels:
        app: test
    spec:
      replicas: 1 
      selector:
        matchLabels:
          app: test
      template:
        metadata:
          labels:
            app: test
        spec:
          containers:
          - image: registry-vpc.cn-shanghai.aliyuncs.com/eci_open/nginx:alpine
            name: c1
            env:
            - name: ECI_CONTAINER_EXIT_PRIORITY
              value: "1000"
          - image: registry-vpc.cn-shanghai.aliyuncs.com/eci_open/nginx:alpine
            name: c2
            env:
            - name: ECI_CONTAINER_EXIT_PRIORITY
              value: "0"
            args:
            - /bin/sh
            - -c
            - sleep 3600s
          - image: registry-vpc.cn-shanghai.aliyuncs.com/eci_open/nginx:alpine
            name: c3
            env:
            - name: ECI_CONTAINER_EXIT_PRIORITY
              value: "-1000"
            args:
            - /bin/sh
            - -c
            - sleep 3600s
  2. Hapus pod, lalu amati urutan peristiwa pembunuhan kontainer dalam pod.

    Catatan

    Jika ingin memeriksa urutan keluar kontainer, lihat peristiwa secara tepat waktu. Anda mungkin tidak dapat mengamati peristiwa setelah pod dihapus.

    kubectl describe pod <pod name>

    Bagian Events dari respons menunjukkan bahwa kontainer c1, c2, dan c3 keluar secara berurutan. Contoh respons:

    容器退出.png