2016-03-07 74 views
1

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

下一次我们想更新pod,我们可以再次更新部署。

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

回答

1

部署是一个对象,可让您定义声明性部署。 它封装

  • 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,并且需要现有的复制控制器。

+1

所以,如果你需要更新你的荚kubectl滚动更新仍然是最好的选择吗? – mateeyow

0

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

+0

那么哪个更适合用于生产? – mateeyow

1

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

这是kubernetes 1.2.1