【问题标题】:Kubernetes deployment vs rolling-updateKubernetes 部署与滚动更新
【发布时间】:2016-03-07 11:51:28
【问题描述】:

我已经尝试了 Kubernetes 的所有基础知识,如果您想更新您的应用程序,您可以使用 kubectl rolling-update 来一个一个地更新 pod 而不会停机。现在,我再次阅读了 kubernetes 文档,并在 v1beta1 版本上发现了一个名为 Deployment 的新功能。我很困惑,因为部署文档上有一行:

下次我们要更新 pod 时,我们可以再次更新部署。

这不是rolling-update的角色吗?任何输入都会非常有用。

【问题讨论】:

    标签: cluster-computing kubernetes


    【解决方案1】:

    Deployment 是一个允许您定义声明式部署的对象。 它封装了

    • DeploymentStatus 对象,负责管理副本数量及其状态。

    • DeploymentSpec 对象,其中包含副本数量、templateSpec、选择器和其他一些处理部署行为的数据。

    您可以在此处查看实际代码: https://github.com/kubernetes/kubernetes/blob/5516b8684f69bbe9f4688b892194864c6b6d7c08/pkg/apis/extensions/v1beta1/types.go#L223-L253

    您将主要使用部署以声明性的方式部署服务/应用程序。

    如果您想修改部署,请更新您使用的 yaml/json,而不更改元数据。

    相比之下,kubectl rolling-update 不是声明性的,不涉及 yaml/json,并且需要现有的复制控制器。

    【讨论】:

    • 那么如果你需要更新你的 pod,kubectl rolling-update 仍然是最好的选择吗?
    【解决方案2】:

    我一直在使用复制控制器和声明性部署对象测试服务的滚动更新。我发现使用 rc 从客户端的角度来看似乎没有停机时间。但是当 Deployment 进行滚动更新时,客户端会出现一段时间的错误,直到更新稳定为止。

    这是 Kubernetes 1.2.1

    【讨论】:

      【解决方案3】:

      主要区别在于“kubectl rolling-update”是客户端驱动的滚动更新,而 Deployment 对象为您提供服务器端滚动更新。

      【讨论】:

      • 那么在生产中使用哪个更可取?
      猜你喜欢
      • 2020-08-27
      • 1970-01-01
      • 1970-01-01
      • 2020-04-06
      • 1970-01-01
      • 2021-09-21
      • 1970-01-01
      • 2017-07-10
      相关资源
      最近更新 更多