基本上,我想尝试的是使用Pod生命周期,并检查是否可以在Pod终止之前进行一些清理/备份,例如复制日志。
我需要什么: 在终止之前将日志/堆转储从容器复制到hostPath / S3
我尝试过的事情:
我使用带有bash命令的preStop挂钩来回显消息(只是看它是否有效!)。使用了terminationGracePeriodSeconds,延迟了preStop并切换了它们以查看该过程是否有效。例如保持TerminalGracePeriodSeconds:30秒(默认值)并将preStop命令设置为睡眠50秒,并且不应生成该消息,因为容器将在此时终止。这可以按预期工作。
我的问题:
我发现这篇文章与此密切相关,但是无法通过https://github.com/kubernetes/kubernetes/issues/24695
感谢所有输入!!
答案 0 :(得分:2)
preStop挂钩允许(推荐)什么样的过程?由于要复制15或更多的日志/堆,将花费大量时间。然后,这一次将用于定义终止GracePeriodSeconds
这里没有任何内容,更多的是意见,以及您希望吊舱如何徘徊。另一个选择是让您的Pod终止并将数据存储在某个位置(例如,AWS S3,EBS),在该位置数据将在Pod生命周期内持续存在,然后使用诸如Job之类的东西来清理数据,等等。>
当preStop花费的时间超过设置的gracePeriod时,会发生什么? (以防日志很大,例如10个演出)
您的preStop无法完成,这可能意味着数据不完整或数据损坏。
如果我没有任何钩子,但仍然设置了terminationGracePeriodSeconds,会发生什么?容器会一直保持到那个宽限时间吗?
这说明了顺序(来自here):