是否可以将ReplicaSet配置为允许正在进行的更新完成?

时间:2018-12-07 11:25:01

标签: kubernetes

我目前有一个kubernetes设置,我们正在运行一个解耦的drupal / gatsby应用程序。 drupal充当gatsby在构建时从中获取的内容存储库。 Drupal还通过定制模块进行配置,以连接到k8s api并修补运行gatsby的部署。 Gatsby不会持久运行,而是此部署使用gatsby作为初始化容器来构建站点,以便随后可以由nginx容器提供服务。通过修补部署(修改标签),可以创建一个新的副本集,该副本集将强制执行新的gatsby构建,最终替换旧的构建。

这似乎很好,除了一个方面,我对此感到很满意。当涉及多个后续内容编辑时,副本集的默认缩放行为当前存在问题。当您在drupal中进行后续内容编辑时,它仍将与k8s api联系并修补部署。这将导致创建新的副本集,原始副本集保持原样,先前的副本集按比例缩小,并且当前正在创建的所有吊舱(盖茨建筑)均被杀死。我可以看到为什么在大多数情况下可能需要这样做,但是对我来说,这增加了您能够在网站上看到这些更改所花费的时间。如果多个人同时使用drupal进行编辑,这将变得很复杂,并且可能会出现问题。

理想情况下,我希望当前正在构建的容器能够完成,并使这些副本集完成扩展,并在完成后排队创建另一个副本集。这将允许尽快部署第一个构建中的任何更新,同时在此之后立即排队另一个构建以包括任何后续内容,并且只要负载需要它就可以继续进行,并且不再需要。有什么办法可以做到这一点?

1 个答案:

答案 0 :(得分:0)

这是Kubernetes的常规行为。更新部署时,它会根据新设置分别创建新的ReplicaSet和Pod。 Kubernetes会保留一些旧的ReplicatSet,以防回滚。

如果我正确理解您的问题。您无法更改此行为,因此您需要对应用程序的体系结构进行一些操作。