All Products
Search
Document Center

Elastic Container Instance:Konfigurasikan urutan startup dan exit kontainer

Last Updated:Jun 22, 2026

Topik ini menjelaskan cara menggunakan variabel lingkungan untuk mengonfigurasi prioritas startup dan exit kontainer dalam sebuah Pod ECI agar dimulai dan dihentikan sesuai urutan yang ditentukan.

Cara kerja

Secara default, kontainer dalam sebuah Pod ECI dimulai dan dihentikan secara paralel tanpa urutan tertentu. Namun, beberapa skenario melibatkan ketergantungan antarkontainer sehingga satu kontainer hanya boleh dimulai setelah kontainer lainnya berjalan atau hanya boleh dihentikan setelah kontainer lainnya berhenti. Contohnya:

  • Dalam skenario tata kelola layanan Istio, kontainer istio-proxy harus dalam status Ready sebelum kontainer aplikasi menghasilkan traffic dan harus dihentikan hanya setelah kontainer aplikasi berhenti.

  • Untuk pengumpulan log, kontainer agen log harus dalam status Ready sebelum kontainer aplikasi menghasilkan log dan harus dihentikan hanya setelah kontainer aplikasi berhenti.

Untuk mengatasi skenario tersebut, ECI memungkinkan Anda menetapkan prioritas startup dan exit untuk kontainer dengan menggunakan variabel lingkungan sehingga kontainer tersebut dimulai dan dihentikan sesuai urutan yang ditentukan.

Konfigurasi

Variabel lingkungan berikut mengatur urutan startup dan exit kontainer:

Parameter

Variabel lingkungan

Deskripsi

Prioritas startup kontainer

ECI_CONTAINER_LAUNCH_PRIORITY

  • Nilai valid: -1000 hingga 1000. Default: 0. Nilai yang lebih besar menunjukkan prioritas startup yang lebih tinggi.

  • Kontainer dengan prioritas lebih tinggi selalu dimulai sebelum kontainer dengan prioritas lebih rendah. Kontainer dengan prioritas yang sama dimulai secara paralel, dan urutan startup-nya tidak dijamin.

  • Jika suatu kontainer (misalnya B) bergantung pada layanan dari kontainer lain (A), Anda harus menetapkan prioritas startup yang lebih tinggi untuk kontainer A dan juga mengonfigurasi readiness probe untuknya. Probe ini memastikan bahwa kontainer B hanya dimulai setelah kontainer A siap.

Prioritas exit kontainer

ECI_CONTAINER_EXIT_PRIORITY

  • Nilai valid: -1000 hingga 1000. Default: 0. Nilai yang lebih besar menunjukkan prioritas exit yang lebih tinggi.

  • Kontainer dengan prioritas lebih tinggi selalu dihentikan sebelum kontainer dengan prioritas lebih rendah. Kontainer dengan prioritas yang sama dihentikan secara paralel, dan urutan exit-nya tidak dijamin.

Penting

Mengonfigurasi urutan exit kontainer dapat menyebabkan total waktu terminasi Pod melebihi nilai TerminationGracePeriodSeconds dalam spesifikasi Pod-nya.

Contoh

Konfigurasikan urutan startup kontainer

  1. Gunakan perintah berikut untuk membuat Penyebaran dari file konfigurasi YAML.

    kubectl apply -f test-launch.yaml

    Konten test-launch.yaml berikut mendefinisikan sebuah Penyebaran dengan satu replika. Pod tersebut berisi dua kontainer, c1 dan c2, di mana c1 memiliki prioritas startup lebih tinggi daripada c2. Pemeriksaan kesiapan dikonfigurasi untuk c1 agar memastikan c2 hanya dimulai setelah 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. Periksa waktu startup kontainer dalam status Pod.

    kubectl describe pod <pod name>

    Bagian Containers pada output menunjukkan bahwa kontainer c2 dimulai setelah kontainer c1. Berikut contohnya:

    Containers:
    c1:
        Container ID:   containerd://779ec5b6d9ad1164c929ab0b8bbc4a3a3b24fe1f9654867e842f2dcfe7b24beb
        Image:          registry.cn-shanghai.aliyuncs.com/eci_open/nginx:alpine
        Image ID:       registry.cn-shanghai.aliyuncs.com/eci_open/nginx@sha256:2ec3c026183996087f26c6b3
        Port:           <none>
        Host Port:      <none>
        State:          Running
          Started:      Wed, 16 Aug 2023 07:11:48 +0000
        Ready:          True
        Restart Count:  0
        Readiness:      http-get http://:80/ delay=30s timeout=1s period=3s #success=1 #failure=3
        Environment:
          ECI_CONTAINER_LAUNCH_PRIORITY:  1000
        Mounts:
          /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-2qkqp (ro)
    c2:
        Container ID:   containerd://fe6261cc2e659ee9afb07c2efd516250aeb854544504d66ac011b557e94a0cb6
        Image:          registry-vpc.cn-shanghai.aliyuncs.com/eci_open/nginx:alpine
        Image ID:       registry.cn-shanghai.aliyuncs.com/eci_open/nginx@sha256:2ec3c026183996087f26c6b38
        Port:           <none>
        Host Port:      <none>
        Args:
          /bin/sh
          -c
          sleep 3600s
        State:          Running
          Started:      Wed, 16 Aug 2023 07:12:20 +0000
        Ready:          True
        Restart Count:  0
        Environment:
          ECI_CONTAINER_LAUNCH_PRIORITY:  0

Konfigurasi urutan keluar kontainer

  1. Gunakan perintah berikut untuk membuat Penyebaran dari file konfigurasi YAML.

    kubectl apply -f test-exit.yaml

    Konten test-exit.yaml berikut mendefinisikan sebuah Penyebaran dengan satu replika. Pod tersebut berisi tiga kontainer, dengan prioritas exit diatur secara menurun: c1, c2, dan c3.

    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 tersebut, lalu amati urutan event Killing untuk kontainer-kontainer tersebut.

    Catatan

    Event-event ini bersifat sementara dan mungkin tidak tersedia setelah Pod dihapus.

    kubectl describe pod <pod name>

    Bagian Events pada output menunjukkan kontainer berhenti sesuai urutan prioritas exit-nya: c1, c2, lalu c3. Berikut contohnya:

    Events:
      Type     Reason                  Age    From               Message
      ----     ------                  ----   ----               -------
      Warning  MissingClusterDNS       2m10s  virtual-kubelet    pod: default/test-exit-pr
    and cannot create Pod using "ClusterFirst" policy. Falling back to "Default" policy.
      Normal   DefaultInstanceTypeMatch  2m10s  EciService       [eci.containergroup]The de
      Warning  ImageCacheMissed        2m9s   EciService         [eci.imagecache]Missed ima
      Normal   ImageCacheAutoCreated   2m9s   EciService         [eci.imagecache]Image cach
      Normal   Pulling                 115s   kubelet            Pulling image "registry.cn
      Normal   Pulled                  113s   kubelet            Successfully pulled image
    ing)
      Normal   Created                 113s   kubelet            Created container c1
      Normal   Started                 113s   kubelet            Started container c1
      Normal   Pulled                  113s   kubelet            Container image "registry.
      Normal   Created                 113s   kubelet            Created container c2
      Normal   Started                 113s   kubelet            Started container c2
      Normal   Pulled                  113s   kubelet            Container image "registry.
      Normal   Created                 112s   kubelet            Created container c3
      Normal   Started                 112s   kubelet            Started container c3
      Normal   Killing                 37s    kubelet            Stopping container c1
      Normal   Killing                 37s    kubelet            Stopping container c2
      Normal   Killing                 7s     kubelet            Stopping container c3