基本上,我想做的是玩转 pod 生命周期,并检查我们是否可以在 pod 终止之前进行一些清理/备份,例如复制日志。
我需要什么:在终止之前将日志/堆转储从容器复制到 hostPath/S3
我尝试了什么:
我使用带有 bash 命令的 preStop 钩子来回显一条消息(只是为了看看它是否有效!!)。使用带有延迟的terminationGracePeriodSeconds preStop 并切换它们以查看该过程是否有效。前任。保持 terminateGracePeriodSeconds:30 秒(默认)并将 preStop 命令设置为休眠 50 秒,并且不应生成消息,因为届时容器将被终止。这按预期工作。
我的问题:
- preStop 钩子允许(推荐)什么样的进程?因为复制 15 个或更多的日志/堆转储将花费大量时间。然后这个时间将用于定义终止GracePeriodSeconds
- 当 preStop 花费的时间超过设置的 gracePeriod 时会发生什么?(如果日志很大,比如 10 个演出)
- 如果我没有任何钩子但仍然设置了 terminateGracePeriodSeconds 会发生什么?容器会一直保持到那个宽限期吗?
我发现这篇文章与此密切相关,但无法通过https://github.com/kubernetes/kubernetes/issues/24695
所有输入表示赞赏!