kubernetes 如何使用Helm调用带有预删除钩子的Pod内部脚本

moiiocjp  于 5个月前  发布在  Kubernetes
关注(0)|答案(1)|浏览(55)

我想调用pod内部的一个带有pre-delete钩子的脚本。使用kubernetes钩子,这些脚本看起来像是在实际的pod内部执行的,但是据我所知,在helm中,这些脚本是在一个单独的pod中运行的,所以它们将无法与pod中运行的任何进程交互。
有没有办法像kubernetes对helm那样调用pod内部的脚本来删除?

eqqqjvef

eqqqjvef1#

Helm没有这个功能。Helm hook总是在安装/升级/删除生命周期的某个特定点创建一个新资源,这通常是一个Job;这意味着新Job将创建一个新Pod。Helm不能执行kubectl exec或以其他方式运行命令。
一般来说,“在容器中运行命令”不是典型的工作流程,您应该设计您的应用程序和部署以避免这种情况。举个例子,在Kubernetes中,您可以非常轻松地运行Deployment的多个副本,并且您通常会希望运行多个副本,只是为了基本的冗余。现在,如果您的shutdown hook需要在Pod中运行命令,它会执行哪一个,另外两个会发生什么?如果不在乎哪一个,那么启动一个专用的Job来进行清理也应该可以。如果每个Pod都需要运行它,那么在应用程序中放置一个shutdown hook将更加可靠,即使在非Kubernetes的上下文中也可以工作。

相关问题