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

caa*_*os0 5 kubernetes

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

$ kubectl set image deployments myapp myapp=caarlos0/myapp:v2
Run Code Online (Sandbox Code Playgroud)

然后,我用以下命令查看更改rollout status

$ kubectl rollout status deployments myapp
Run Code Online (Sandbox Code Playgroud)

通过这种方式发现的问题是:

  • 有时候,似乎根本没有触发部署,并且当我致电时rollout status,出现如下错误:

    $ kubectl rollout status deployments myapp
    Waiting for deployment spec update to be observed...
    error: timed out waiting for the condition
    
    Run Code Online (Sandbox Code Playgroud)
  • rollout history命令将CHANGE-CAUSEas 显示为<none>,但我找不到在其中显示任何有用内容的方法。

那么,我是在做错事(还是不是以最佳方式)?如何改善这个工作流程?

pag*_*gid 5

你在做正确的事。在更新部署文档中,您会发现:

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

因此,$ kubectl set image deployments/app <image>如果<image>尚未为您的容器配置,运行只会触发推出。

更改原因可用于通过将--record标志附加到您的命令来记录用于触发 rollout 的命令(请参阅检查 rollout 历史记录)。