2017-09-10 37 views
2

經過一些激烈的谷歌和SO搜索後,我找不到任何文件,提到滾動更新和設置圖像,並可以強調兩者之間的差異。Kubernetes滾動更新與設置圖像

任何人都可以放光?我什麼時候會使用這兩種方法?

編輯:值得一提的是,我已經在使用部署(而不是直接複製控制器)並且使用yaml配置文件。知道是否有一種方法可以使用配置文件而不是直接命令來執行任何操作,這也很好。

+0

你用'使用配置文件而不是直接命令'是什麼意思?您想直接在集羣上部署conf文件來更改部署,而不是使用k8s API服務器? – fishi

+0

我的意思是我使用這裏陳述的第二種方法 - > https://kubernetes.io/docs/tutorials/object-management-kubectl/object-management/ – AvivC

回答

1

在較早的k8s版本中,ReplicationController是管理一組複製Pod的唯一資源。要更新ReplicationController的豆莢,請使用kubectl rolling-update

後來,k8s引入了Deployment,它管理着ReplicaSet資源。 Deployment可以通過kubectl set image更新。

使用Deployment資源(正如您已經這樣做)是首選方式。我猜ReplicationController和它的rolling-update命令主要還是爲了向後兼容。


UPDATE:正如在評論中提到:

要更新Deployment我用kubectl patch,因爲它也可能會改變,如添加新的ENV的東西瓦爾而kubectl set image是相當有限的,只能改變形象版。另請注意,patch可應用於所有k8s資源,並不限於與Deployment一起使用。

後來,我將部署流程轉移到使用helm - 一個非常整潔和k8s本地軟件包管理工具。強烈建議看看它。

+0

所以,你的'實際上說我應該更喜歡使用' kubectl設置圖像?這也是我從文檔中獲得的內容,但它在那裏非常模糊 – AvivC

+1

在編寫'部署'時更加靈活和方便。就我個人而言,我通過'kubectl patch'更新了'Deployments',因爲它也可以改變部署的其他部分,如添加新的env vars。使用'kubectl set image',您只能更改圖像版本。後來我把我的部署轉移到使用[helm](https://helm.sh/) - 一個非常整潔和k8s原生包管理工具。 – fishi