繁体   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