2017-03-02 87 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)。