Konfigurasikan kait siklus hidup kontainer - AWS Bimbingan Preskriptif

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Konfigurasikan kait siklus hidup kontainer

Selama shutdown kontainer yang anggun, aplikasi Anda harus merespons SIGTERM sinyal dengan memulai shutdownnya sehingga klien tidak mengalami downtime apa pun. Aplikasi Anda harus menjalankan prosedur pembersihan seperti berikut:

  • Menyimpan data

  • Menutup deskriptor file

  • Menutup koneksi database

  • Menyelesaikan permintaan dalam penerbangan dengan anggun

  • Keluar tepat waktu untuk memenuhi permintaan penghentian pod

Tetapkan masa tenggang yang cukup lama untuk pembersihan selesai. Untuk mempelajari cara merespons SIGTERM sinyal, lihat dokumentasi untuk bahasa pemrograman yang Anda gunakan untuk aplikasi Anda.

Pengait siklus hidup kontainer memungkinkan kontainer untuk mengetahui peristiwa dalam siklus hidup pengelolaannya. Container dapat menjalankan kode yang diimplementasikan dalam handler ketika hook siklus hidup yang sesuai dijalankan. Pengait siklus hidup kontainer menyediakan solusi untuk sifat asinkron Kubernetes dan cloud. Pendekatan ini dapat mencegah hilangnya koneksi yang diteruskan ke pod penghentian sebelum sumber daya masuk dan iptables diperbarui untuk tidak mengirim lalu lintas baru ke pod.

Container Lifecycle dan Endpoint dan EndpointSlice merupakan bagian dari yang berbeda. APIs Penting untuk mengatur ini. APIs Namun, ketika sebuah pod sedang dihentikan, Kubernetes API secara bersamaan akan memberitahukan kubelet (untuk Container Lifecycle) dan controller. EndpointSlice Untuk informasi selengkapnya, termasuk diagram, lihat Menangani permintaan klien dengan anggun di Panduan Praktik Terbaik EKS.

Ketika kubelet mengirim SIGTERM ke pod, EndpointSlice controller menghentikan EndpointSlice objek. Penghentian itu memberi tahu server API Kubernetes untuk memberi tahu setiap node yang akan diperbaruikube-proxy. iptables Meskipun tindakan ini terjadi pada saat yang sama, tidak ada dependensi atau urutan di antara mereka. Ada kemungkinan besar bahwa wadah menerima SIGKILL sinyal jauh lebih awal daripada kube-proxy pada setiap node memperbarui iptables aturan lokal. Dalam hal ini, skenario yang mungkin termasuk yang berikut:

  • Jika aplikasi Anda segera dan terus terang membatalkan permintaan dan koneksi dalam penerbangan setelah menerima klien, lihat SIGTERM, kesalahan. 500

  • Jika aplikasi Anda memastikan bahwa semua permintaan dan koneksi dalam penerbangan diproses sepenuhnya setelah menerimaSIGTERM, selama masa tenggang, permintaan klien baru akan tetap dikirim ke wadah aplikasi karena iptables aturan mungkin belum diperbarui. Sampai prosedur pembersihan menutup soket server pada wadah, permintaan baru tersebut akan menghasilkan koneksi baru. Ketika masa tenggang berakhir, koneksi baru yang dibuat setelah dikirim SIGTERM dijatuhkan tanpa syarat.

Untuk mengatasi skenario sebelumnya, Anda dapat menerapkan integrasi dalam aplikasi atau kait PreStop siklus hidup. Untuk informasi selengkapnya, termasuk diagram, lihat Mematikan aplikasi dengan anggun di Panduan Praktik Terbaik EKS.

Catatan: Terlepas dari apakah aplikasi dimatikan dengan anggun, atau hasil preStop pengait, wadah aplikasi akhirnya dihentikan pada akhir masa tenggang. SIGKILL

Gunakan preStop hook dengan sleep perintah untuk menunda pengirimanSIGTERM. Ini akan membantu untuk terus menerima koneksi baru sementara objek ingress merutkannya ke pod. Uji nilai waktu sleep perintah untuk memastikan bahwa latensi Kubernetes dan dependensi aplikasi lainnya diperhitungkan, seperti yang ditunjukkan pada contoh berikut:

apiVersion: apps/v1 kind: Deployment metadata: name: nginx spec: containers: - name: nginx lifecycle: # This "sleep" preStop hook delays the Pod shutdown until # after the Ingress Controller removes the matching Endpoint or EndpointSlice preStop: exec: command: - /bin/sleep - "20" # This period should be turned to Ingress/Service Mesh update latency

Untuk informasi selengkapnya, lihat Pengait kontainer dan Praktik Terbaik EKS — Load Balancing (Aplikasi mematikan dengan anggun).