2016-06-25 54 views
0

有沒有什麼方法可以複製我在cloud.docker上獲得的行爲,其中可以使用最新映像手動重新部署服務,或者在更新存儲庫映像時自動重新部署服務?當存儲庫映像更改時重新部署Google容器控制器

現在我做這樣的事情在我的控制器和服務文件shell腳本手動:

kubectl delete -f ./ticketing-controller.yaml || true 
kubectl delete -f ./ticketing-service.yaml || true 
kubectl create -f ./ticketing-controller.yaml 
kubectl create -f ./ticketing-service.yaml 

即使似乎有點重手,但能正常工作。我真的很想念我在cloud.docker上的autoredeploy功能。

回答

1

刪除控制器yaml文件本身不會刪除kubernetes中的實際控制器,除非您有特殊的配置。如果您有超過1個實例在運行,刪除控制器可能不是您想要的,因爲它會刪除正在運行的應用程序的所有實例。你真正想要做的是執行你的應用程序的滾動更新,它將運行舊映像的容器逐漸替換爲運行新映像的容器。

您可以通過手動做到這一點:

  1. 對於Deployment控制器更新YAML文件,圖像和執行kubectl apply
  2. 對於ReplicationController更新yaml文件並執行kubectl rollingupdate。請參閱:http://kubernetes.io/docs/user-guide/rolling-updates/
  3. 隨着V1.3,你將能夠使用kubectl set image

或者,您也可以使用PaaS的,當它在回購更新爲自動推送的圖像。下面是幾個PAAS選項殘缺不全的名單:

  • 紅帽OpenShift
  • 三角帆
  • DEIS工作流程
+0

事實上,事實上,我的服務和管理員都在吹。 滾動更新似乎是生產的途徑。我只是處理登臺/測試服務器,所以我不在乎停電。我也可以使用cloud.docker推送到谷歌計算引擎,但我應該想出一個純粹的容器引擎解決方案。 –

1

根據Kubernetes documentation

假設你正在運行Nginx的版本1.7.9:

$ kubectl run my-nginx --image=nginx:1.7.9 --replicas=3 
deployment "my-nginx" created 

要更新到1.9.1版本,只需從nginx:1.7.9改變 .spec.template.spec.containers[0].imagenginx:1.9.1 ,用kubectl命令。

$ kubectl edit deployment/my-nginx 

就是這樣!部署將逐步在場景後面逐步更新已部署的nginx 應用程序。它確保只有 特定數量的舊副本可能正在更新,而它們正在更新 ,並且只有一定數量的新副本可能在所需數量的Pod上面創建 。

+0

這是一個有點不同,因爲我使用的是複製控制器。但是我仍然希望在Docker註冊表被觸及時自動重新部署。哦,也許有一些增值服務可以爲我做到這一點:)。 –

相關問題