【问题标题】:Kubernetes deployment strategy to wait for all replicasKubernetes 部署策略等待所有副本
【发布时间】:2019-12-20 08:58:08
【问题描述】:

我获得了一项具有自动缩放功能的服务,这意味着它可以运行 2 个或 4 个 pod。我的问题是这个服务是一个带有 service-worker 的 reactjs 应用程序。

使用我当前的部署策略,它将创建一个新的 Pod 并一次杀死一个,这会在客户端警告有新的更新并尝试从服务器获取新资产并且负载均衡器将其转发到旧豆荚。

所以基本上我想知道是否可以更改为创建 x pod 并同时替换它们的策略?

【问题讨论】:

    标签: kubernetes kubernetes-pod


    【解决方案1】:

    使用 Recreate deployment strategy 首先杀死所有旧的 pod,然后创建新的。

    或者,如果您希望首先创建一组并行的新 pod,将流量重新路由到这些新 pod,然后终止旧 pod(即blue/green deployment),请检查this guide

    【讨论】:

    • 不,这会在创建新的 Pod 之前杀死 Pod。我想启动与运行相同的数量,在检查所有 3 个都已启动并运行后,它应该替换旧版本上运行的数量
    • 还是我错了? "在创建新的 Pod 之前,所有现有的 Pod 都会被杀死"
    • 哦,对,没错。所以你要找的更多的是blue/green deployment? Kubernetes 没有对此的内置支持,但 this guide 应该可以帮助您入门。
    【解决方案2】:

    在您的 deployment.yaml 清单中添加 spec.strategy.type 并将其设置为“重新创建” 这将在创建新的 pod 之前杀死所有现有的 pod。

    spec:
      strategy:
        type: Recreate
    

    您使用的策略是 - RollingUpdate ,如果您不指定,则为默认值。

    【讨论】:

      【解决方案3】:

      尽管它是手动的并且符合您的要求,但请遵循此方法。

      假设您在集群中运行 1.0 版(带有标签 version:1.0 )并且您想升级到 2.0 版

      1. 使用标签版本:2.0 部署 2.0 版
      2. 验证 pod 是否正在运行,并且您的 2.0 版应用运行正常。
      3. 编辑版本 1.0 服务选择器以使用标签版本:2.0
      4. 删除 1.0 版部署

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-08-11
        • 1970-01-01
        • 2021-03-09
        • 2019-01-29
        • 1970-01-01
        • 2020-12-02
        • 1970-01-01
        相关资源
        最近更新 更多