2017-04-10 39 views
0
apiVersion: extensions/v1beta1 
kind: Deployment 
metadata: 
    name: test 
spec: 
    replicas: 1 
    template: 
    metadata: 
     labels: 
     app: test 
    spec: 
     containers: 
     - name: test 
     image: xxx:latest 
     ports: 
     - containerPort: 80 
     imagePullPolicy: Always 
     imagePullSecrets: 
     - name: aaaa 

我使用標籤「latest」。當我更新圖像時,新圖像仍然是「最新的」。當我「kubectl設置鏡像部署/測試測試= xxx:最新」時,什麼都沒有發生。我該怎麼辦?如何在kubernetes中滾動更新部署?

+0

你是從本地碼頭圖像還是從存儲庫中拉取圖像?你可以嘗試更新一些其他版本的圖像?它仍然沒有改變任何東西嗎? – Tarun

+0

[如何在沒有任何更改的情況下在kubernetes中「部署」,以便讓pod循環](http://stackoverflow.com/questions/40500377/how-to-deploy-in-kubernetes-without-any-變化,只是對獲得吊艙到週期) – pagid

回答

0

滾動更新取決於泊塢窗圖像標籤。如果您在部署中使用latest標記,則需要使用新版本剪切新圖像。

如果您始終使用latest標記,則部署資源無法確定圖像是否已更改。至於k8s,你已經運行一個圖像與標籤latest,所以它沒有任何事情要做。

由於這個原因,強烈建議不要使用latest進行部署。如果您正確地版本化碼頭圖像,您將會有更容易的時間。

2

當更改template下的PodTemplateSpec時,始終會觸發RollingUpdate。

在使用:latest標籤時,建議不要使用imagePullPolicy: Always,並且每次調整圖像時都會更改標籤。這樣的:

kubectl patch deployment test -p "{\"spec\":{\"template\":{\"metadata\":{\"labels\":{\"date\"‌​:\"$(date +%s)\"}}}}}"