Untuk apa HEALTHCHECK benar-benar digunakan saat menjalankan Docker dalam mode swarm?

Saya mengalami kesulitan mencari tahu apa HEALTHCHECK benar-benar digunakan untuk saat menjalankan Docker dalam mode swarm.

Satu tempat menyarankan Docker akan restart tugas yang dianggap tidak sehat. Tempat lain menjelaskan bahwa Docker akan berhenti mengirim lalu lintas untuk tugas-tugas yang tidak sehat. Dokumentasi Docker sendiri hanya menjelaskan apa yang HEALTHCHECK direktif adalah, dan bagaimana mengkonfigurasinya. Tidak ada upaya untuk menjelaskan apa yang terjadi ketika tugas berjalan tidak sehat.

Dengan kata lain, saya berjuang untuk menemukan penjelasan yang jelas dan dapat dipercaya tentang apa HEALTCHECK sungguh.

Selanjutnya, melihat Docker REST API, bagian data khusus ini (apakah tugas sehat atau tidak) bahkan tidak diekspos untuk tugas (meskipun diekspos untuk kontainer). Ini membuat sulit untuk menggunakan metrik ini untuk memantau kawanan buruh pelabuhan, jadi menurut saya ini juga bukan tujuan utama metrik.

Apa yang sebenarnya terjadi ketika tugas menjadi tidak sehat saat menjalankan Docker dalam mode swarm?

Anda mengatur pemeriksaan kesehatan dengan cara yang sama seperti yang disarankan tautan pertama Anda. Semua cara itu akan memberi tahu docker perintah apa yang harus dijalankan, seberapa sering menjalankannya, dll.

Jika Anda menggunakan docker run untuk memulai penampung, UI akan terlihat tidak sehat saat pemeriksaan kesehatan gagal, tetapi docker tidak akan melakukan apa pun pada penampung. Terserah Anda atau solusi pemantauan tingkat yang lebih tinggi untuk bertindak di atasnya.

Jika Anda menggunakan docker service create (atau docker stack deploy) untuk membuat layanan Swarm dan healthcheck gagal, itu akan menghentikan/mematikan tugas (wadah) dan menjadwal ulang tugas baru untuk menggantikan replika layanan tersebut. Selama stop / kill (ia mencoba menghentikannya dengan anggun, tetapi membunuh setelah 10 detik seperti semua kontainer docker), Swarm akan menghentikan overlay lalu lintas masuk ke tugas itu seperti halnya untuk semua tugas yang berhenti.