2 回答
TA贡献1829条经验 获得超9个赞
您的撰写文件中有一个解决方案: update_config
version: '3.4'
services:
your-app:
image: your/image:old
deploy:
replicas: 5
update_config:
parallelism: 2
delay: <yourStartupTimeInSeconds+3>s
order: stop-first
因此,当您部署更新版本的your/imageswarm 时,swarm 将关闭两个容器,部署两个新容器,等待<yourStartupTimeInSeconds+3>几秒钟,直到它使用新映像部署另外 2 个副本,再次等待并部署剩余的一个。
无论如何,您前面的负载均衡器(服务)都会进行健康检查(节点可能会失败),对吗?
TA贡献1847条经验 获得超7个赞
每个 docker Orchestrator 都有一个“健康检查”系统,旨在消除这个问题(健康检查或准备或活跃度或......)。
如果您在您的应用程序上创建一个“ping”端点(或类似也检查所需资源的就绪端点之类的东西),您可以设置运行状况检查以向该端点发出 HTTP 请求,并且只有在您有响应时才能成功200。
只有当健康检查没问题时,起始容器才会在服务池中。在此之前,您的容器不会收到任何请求。
此外,这种检查还用于确定您的容器(k8s 中的 pod)是否需要在出现问题时重新启动(应用程序未死,但形状不佳,使响应时间确实更长,或发送错误)。
请注意,某些前端负载均衡器也可以使用这种健康检查。但是只有当您从这个负载均衡器直接连接到 docker 容器时才需要使用它(这种直接链接并不是一个很好的做法)。
添加回答
举报