2015-07-20 70 views
2

我正在使用集裝箱使用Google Container Engine Kubernetes 0.20.2宕機時間爲幾秒鐘的kubectl滾動更新

在該集羣中,我有1個複製控制器(2個副本)1服務與定義爲負載平衡器(基本設置)一個規範類型。

在這裏一切工作正常; 然後我想用kubectl命令滾動更新到不同的圖像:

kubectl rolling-update my-rc \ 
    --image=gcr.io/project/gcloudId:my-image-updated \ 
    --update-period=0m 

關於我的理解,運行這個命令應該具有零停機時間的照顧。不幸的是,我一直在循環中使用curl命令進行一些測試,而且我還有幾秒鐘的停機時間。 任何想法爲什麼發生這種情況?

回答

7

--update-period標誌告訴Kubernetes在每個要更新的Pod之間等待多久。在更新週期設置爲0時,Kubernetes將一次更新所有的豆莢,導致新豆莢啓動時短時間不可用。你應該至少設置--update-period,只要它需要你的每個豆莢初始化。如果您不想考慮這個問題,幾乎所有情況下的默認值(1分鐘)都可以。

+0

感謝您的回覆,奇怪的是必須定義更新週期,因爲如果您從一個緩慢的私人Docker註冊表下載了巨大的圖像,您必須猜測下載它需要多少時間?還是隻是初始化,Kubernetes知道圖像何時準備就緒並正在運行? 此外,我還沒有找到一種方法來設置LoadBalancer的會話親和力,任何想法? –

+1

一旦容器啓動,它只是初始化時間。 –

+0

在服務規範中有一個'sessionAffinity'字段,您可以在其中配置負載均衡器關聯。 –