【问题标题】:Can a ReplicaSet be configured to allow in progress updates to complete?可以将 ReplicaSet 配置为允许完成正在进行的更新吗?
【发布时间】:2018-12-07 23:36:44
【问题描述】:

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

这似乎运作良好,我对它相当满意,除了一个方面。当前,当涉及到多个后续内容编辑时,副本集的默认缩放行为存在问题。当您在 drupal 中进行后续内容编辑时,它仍会联系 k8s api 并修补部署。这会导致创建一个新的副本集,原始副本集保持原样,缩小先前的副本集,并且当前正在创建的任何 pod(gatsby 构建)都被杀死。我明白为什么这在大多数情况下可能是可取的,但对我来说,这增加了您在网站上看到这些更改所需的时间。如果多人同时使用 drupal 进行编辑,这将变得更加复杂,并且可能会出现问题。

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

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

    这是 Kubernetes 的常规行为。当您更新 Deployment 时,它会根据新设置创建新的 ReplicaSet 和 Pod。 Kubernetes 会保留一些旧的 ReplicatSet,以防可能发生回滚。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-30
      • 1970-01-01
      • 1970-01-01
      • 2023-03-05
      • 1970-01-01
      • 1970-01-01
      • 2010-11-16
      相关资源
      最近更新 更多