在Kubernetes上更新部署的正确方法

时间:2017-03-02 17:14:59

标签: kubernetes

目前,我正在使用set image命令更新要部署的映像版本:

$ kubectl set image deployments myapp myapp=caarlos0/myapp:v2

然后我用rollout status

观看更改
$ kubectl rollout status deployments myapp

我这样做时遇到的问题是:

  • 有时候,似乎根本没有触发部署,当我调用rollout status时,我会收到这样的错误:

    $ kubectl rollout status deployments myapp
    Waiting for deployment spec update to be observed...
    error: timed out waiting for the condition
    
  • rollout history命令将CHANGE-CAUSE显示为<none>,我找不到让它显示任何有用内容的方法。

那么,我做错了什么(或者不是最好的方式)?如何改进此工作流程?

2 个答案:

答案 0 :(得分:3)

你正在做正确的事。在Updating a deployment文档中,您可以找到:

  

注意:当且仅当部署的广告连播模板(即.spec.template)发生更改时才会触发部署的推出,例如更新模板的标签或容器图像。其他更新(例如扩展部署)不会触发部署。

如果尚未为您的容器配置$ kubectl set image deployments/app <image>,那么正在运行<image>只会触发推广。

更改原因可用于记录用于触发推出的命令,方法是在命令中附加--record标志(参见Checking rollout history)。

答案 1 :(得分:0)

部署由控制平面组件部署控制器观察,确保 kube-controller-manager 正在运行。例如下面的控制器管理器没有运行,所以它不会推出部署。

enter image description here

一旦控制器启动并运行,它将开始推出下面的示例

enter image description here