Healthcheck
在 swarm 模式下執行 Docker 時,HEALTHCHECK 真正用於什麼?
我很難弄清楚
HEALTHCHECK
在 swarm 模式下執行 Docker 時真正使用的是什麼。有一個地方建議Docker 將重新啟動一項被認為不健康的任務。另一個地方解釋說 Docker 將停止向不健康的任務發送流量。Docker 文件本身只解釋了
HEALTHCHECK
指令是什麼,以及如何配置它。它沒有試圖解釋當任務不健康時會發生什麼。換句話說,我正在努力尋找一個清晰可靠的解釋來解釋
HEALTCHECK
真正的作用。此外,查看Docker REST API,這個特定的數據(任務是否健康)甚至沒有暴露給任務(儘管它暴露給容器)。這使得使用該指標來監控 Docker Swarm 變得很困難,因此在我看來,這也不是該指標的主要目的。
當在 swarm 模式下執行 Docker 時任務變得不健康時會發生什麼?
您設置健康檢查的方式與您的第一個連結建議的方式相同。所有這些方式都會告訴 docker 執行什麼命令,執行它的頻率等。
如果你使用
docker run
啟動容器,當健康檢查失敗時 UI 會顯示不健康,但 docker 不會對容器做任何事情。這取決於您或某些更高級別的監控解決方案來對其採取行動。如果您使用
docker service create
(或docker stack deploy
)創建 Swarm 服務並且健康檢查失敗,它將停止/終止任務(容器)並重新安排新任務以替換該服務的副本。在停止/終止期間(它嘗試優雅地停止它,但像所有 docker 容器一樣在 10 秒後終止),Swarm 將停止覆蓋該任務的入站流量,就像它對所有停止任務所做的那樣。