基本上我想做的是研究 Pod 生命周期,并检查我们是否可以在 Pod 终止之前进行一些清理/备份,例如复制日志。
我需要的 :
在终止之前将日志/堆转储从容器复制到 hostPath/S3
我尝试过的:
我使用了带有 bash 命令的 preStop 钩子来回显一条消息(只是为了看看它是否有效!!)。使用带有延迟的终止GracePeriodSeconds 来预停止并切换它们以查看进程是否有效。前任。保持终止GracePeriodSeconds:30秒(默认)并将preStop命令设置为休眠50秒,并且不应生成消息,因为容器将在那时终止。这按预期工作。
我的问题:
- preStop 钩子允许(推荐)什么样的进程?因为复制 15 GB 或更多的日志/堆转储将花费大量时间。该时间将用于定义终止GracePeriodSeconds
- 当 preStop 花费的时间超过设定的宽限期时会发生什么?
(如果日志很大,比如 10 场)
- 如果我没有任何钩子但仍设置终止GracePeriodSeconds 会发生什么?容器会一直保持到宽限期吗?
我发现这篇文章与此密切相关,但无法跟进https://github.com/kubernetes/kubernetes/issues/24695 https://github.com/kubernetes/kubernetes/issues/24695
所有投入表示赞赏!
preStop 钩子允许(推荐)什么样的进程?因为复制 15 GB 或更多的日志/堆转储将花费大量时间。该时间将用于定义终止GracePeriodSeconds
这里什么都可以,这更多的是一种意见以及你希望你的豆荚如何徘徊。另一种选择是让您的 Pod 终止并将数据存储在某个位置(即 AWS S3、EBS),其中数据将在 Pod 生命周期结束后持续存在,然后使用类似的方法Job https://kubernetes.io/docs/tasks/job/清理数据等
当 preStop 花费的时间超过设定的宽限期时会发生什么? (如果日志很大,比如 10 场)
您的 preStop 将无法完成,这可能意味着数据不完整或数据损坏。
如果我没有任何钩子但仍设置终止GracePeriodSeconds 会发生什么?容器会一直保持到宽限期吗?
这解释了顺序:
- SIGTERM 信号被发送到每个容器中的主进程,并且“宽限期”倒计时开始。
- 如果容器没有在宽限期内终止,则会发送 SIGKILL 信号并终止容器。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)