簡體   English   中英

容器優化的操作系統正常關閉芹菜

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM