sas*_*sas 6 docker docker-swarm
start-first很长一段时间以来,我一直在使用该选项将堆栈部署到集群中。
所以给出以下api.yml文件:
version: '3.4'
services:
api:
image: registry.gitlab.com/myproj/api:${VERSION}
deploy:
update_config:
order: start-first
Run Code Online (Sandbox Code Playgroud)
我会针对群管理器运行以下命令:
env VERSION=x.y.z docker stack deploy -f api.yml api
Run Code Online (Sandbox Code Playgroud)
这工作得很好 - 旧服务一直为请求提供服务,直到新服务完全可用。只有这样它才会被拆除并进入关机状态。
最近,我相信这开始发生在 docker v17.12.0-ce 或 v18.01.0-ce - 或者我之前没有注意到 - 相反发生的是旧服务有时没有正确停止。
当这种情况发生时,它会挂起并继续服务请求,导致我们无限期地并排运行新旧版本。
这既发生在复制了服务的集群上,也发生在使用scale=1.
更糟糕的是,我什至无法杀死旧容器。这是我尝试过的:
docker service rm api_apidocker stack rm api && docker stack deploy -f api.yml apidocker rm -f <container id>没有什么能让我摆脱“僵尸”容器。事实上,docker rm -f <container id>甚至锁上,只是坐在那里。
我发现摆脱它们的唯一方法是重新启动 node。多亏了复制,我实际上可以在不停机的情况下做到这一点,但由于各种原因,这不是很好,其中最重要的是如果另一位经理在我这样做时停机可能会发生什么。
有没有其他人看到过这种行为?可能是什么原因,我该如何调试?
小智 1
尝试设置max_replicas_per_node(如果每个节点只需要一个副本,则为 1)placement尝试在部分
参考https://docs.docker.com/compose/compose-file/compose-file-v3/
| 归档时间: |
|
| 查看次数: |
670 次 |
| 最近记录: |