2017-03-02 55 views
2

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

$ 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>,我无法找到一种让它在那里显示有用的东西的方法。

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

+1

在部署上设置图像是处理滚动更新的正确(声明)方法。你能澄清你的环境吗?你是如何配置集群来帮助麻烦的? –

+0

在AWS上为集群配置了kops。客户端和服务器版本都是1.5.2。 – caarlos0

回答

3

你在做正确的事情。内Updating a deployment文档中,你会发现这一点:

注:部署的部署被触发,当且仅当部署的吊舱模板(即.spec.template)发生变化时,例如更新模板的标签或容器图像。其他更新(如扩展部署)不会触发部署。

因此,如果<image>尚未针对您的容器进行配置,那么运行$ kubectl set image deployments/app <image>仅会触发展开。

更改原因可用于通过将--record标志附加到命令来记录用于触发卷展的命令(请参阅Checking rollout history)。