我需要讓容器在kubectl
終止後5分鐘運行。它在銷燬之前需要做一些工作。看起來kubernetes包含我所需要的:優雅的吊艙終結
terminationGracePeriodSeconds: 300
所以我在我的yaml中定義了它。我更新了正在運行的RCs
,刪除當前的窗格,以便創建新的窗格,現在我可以看到一個窗格恰好通過get pod xyz -o=yaml
包含此設置。
不幸的是,當我試圖做rolling-update
時,原來的吊艙在1分鐘後死亡,而不是在5分鐘後死亡。我對目標機器執行ssh操作,我可以看到碼頭工人在這段時間之後對容器進行了規定。
我試圖做一些調查該功能如何工作。我終於找到了文檔kubectl delete
那裏有一個約正常終止期限的概念:
http://kubernetes.io/docs/user-guide/pods/
默認情況下,所有的刪除是在30秒內優雅。 kubectl delete命令支持--grace-period =選項,它允許用戶覆蓋默認值並指定它們自己的值。值爲0表示刪除應立即生效,並立即刪除API中的窗格,以便可以使用相同的名稱創建新的窗格。在被設置爲立即終止節的豆莢將仍然之前給予小寬限期力殺死
於是我帶着一個吊艙,nginx的,並嘗試與grace-period=30
將其刪除。原來,原來的吊艙立即被刪除,並且get pods
顯示新的吊艙正在啓動。
所以沒有30秒。我究竟做錯了什麼?看來所有的豆莢都不考慮這些值。 請注意,我正在使用kubernetes v1.2.2
我還發現此問題https://github.com/kubernetes/kubernetes/issues/24695記者遇到同樣的問題,他以同樣的方式解決了這個問題。所以例如kubernetes 300秒不是太多。
儘管這可能在理論上回答這個問題,但[這將是更可取的](// meta.stackoverflow.com/q/8259)在這裏包含答案的基本部分,並提供供參考的鏈接。 – Draken