[英]Container Optimized OS Graceful Shutdown of Celery
在GCE上運行COS
關於如何使COS正常關閉docker的任何想法?
我最里面的過程是芹菜,這表明他希望SIGTERM能夠優雅地停止
http://docs.celeryproject.org/en/latest/userguide/workers.html#stopping-the-worker
我的入口點是這樣的
exec celery -A some_app worker -c some_concurrency
在COS上,我正在為docker運行服務,例如
write_files:
- path: /etc/systemd/system/servicename.service
permissions: 0644
owner: root
content: |
[Unit]
Description=Some service
[Service]
Environment="HOME=/home/some_home"
RestartSec=10
Restart=always
ExecStartPre=/usr/share/google/dockercfg_update.sh
ExecStart=/usr/bin/docker run -u 2000 --name=somename --restart always some_image param_1 param_2
ExecStopPost=/usr/bin/docker stop servicename
KillMode=processes
KillSignal=SIGTERM
但是最終,當我的COS實例關閉時,它只是拔掉了插頭。
我是否需要添加關閉腳本來執行docker stop? 我需要做更高級的事情嗎?
當容器進程收到SIGTERM
時,其預期退出狀態是什么? 運行systemctl stop <service>
然后systemctl status -l <service>
應該顯示主進程的退出代碼。 例:
Main PID: 21799 (code=exited, status=143)
一種可能是該進程確實收到SIGTERM
並正常關閉,但返回非零退出代碼。 這會使systemd相信它沒有正確關閉。 如果是這樣,請添加
SuccessExitStatus=143
對您的systemd服務應該有所幫助。 (用主進程的實際退出代碼替換143
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.