Docker无法在新添加的VM /节点上下载现有服务的映像

时间:2019-03-10 08:18:25

标签: docker docker-swarm autoscaling

我们有一个现有的群集集群,其中约20个服务跨越10-15个虚拟机。 在服务设置期间,我们将使用“ –with-registry-auth”选项来部署它们。我们的Docker注册表位于AWS ECR上。

一切正常,直到我们添加一个新节点。当新节点添加有现有标签时,容器不会出现在该节点上。在检查服务状态时,我会看到消息“找不到图像”。

示例:我在具有标签代理的2个VM上运行了nginx映像。我再添加1个VM并应用标签代理。 Docker swarm尝试在此新的第3个VM上再部署一个Nginx副本,但由于不存在映像而失败。

Twist / Pointer:如果在创建服务后的4小时内添加了新VM,nginx将出现在新VM上。但是,如果在服务部署4小时后添加了VM(4小时是AWS ECR的凭证到期时间),则映像无法出现在新VM上。 (映像仍在管理器VM上。)

为解决此问题,我们在每个VM上添加了一个cron作业,该作业将每2小时登录一次AWS ECR,以便始终刷新凭证。但这也不能解决问题。

如果我使用“ -with-registry-auth”从管理器节点更新nginx,则即使在4小时后添加了nginx,nginx也会出现在第三台VM上。但这是意料之中的。

还有其他人遇到这个问题吗? 任何指导都会有所帮助

1 个答案:

答案 0 :(得分:0)

我面对了...

如果您的注册表仅是私有的,则会发生这种情况。

我们通过在添加节点过程的阶段添加docker login来解决此问题