我需要让容器在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