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 |
|
Prioritas keluar kontainer | ECI_CONTAINER_EXIT_PRIORITY |
|
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
Buat file konfigurasi YAML untuk aplikasi, lalu gunakan file tersebut untuk membuat Deployment.
kubectl apply -f test-launch.yamlContoh 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 3600sAmati waktu mulai setiap kontainer dalam status pod.
kubectl describe pod <pod name>Bagian
Containersdari respons menunjukkan bahwa waktu mulai kontainer c2 lebih lambat daripada waktu mulai kontainer c1. Contoh respons:
Konfigurasikan prioritas keluar kontainer
Buat file konfigurasi YAML untuk aplikasi, lalu gunakan file tersebut untuk membuat Deployment.
kubectl apply -f test-exit.yamlContoh 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 3600sHapus pod, lalu amati urutan peristiwa pembunuhan kontainer dalam pod.
CatatanJika 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
Eventsdari respons menunjukkan bahwa kontainer c1, c2, dan c3 keluar secara berurutan. Contoh respons: