代码之家  ›  专栏  ›  技术社区  ›  caffein

如何使用helm调用带有预删除钩子的pod内部脚本

  •  0
  • caffein  · 技术社区  · 1 年前

    我想在我的pod内部调用一个带有预删除挂钩的脚本。使用kubernetes钩子,这些脚本似乎是在实际的pod中执行的,但据我所知,在helm中,这些脚本是在一个单独的pod中运行的,因此它们将无法与我的pod中的任何进程交互。

    有没有办法像kubernetes对helm所做的那样,在被删除的pod内部调用脚本?

    1 回复  |  直到 1 年前
        1
  •  0
  •   David Maze    1 年前

    赫尔姆没有这个能力。头盔 hook 总是在安装/升级/删除生命周期的某个特定点创建一个新资源,这通常是一个作业;这意味着新的Job将创建一个新的Pod。赫尔姆做不到 kubectl exec 或者以其他方式运行命令式命令。

    通常,“在容器中运行命令”不是典型的工作流,您应该设计应用程序和部署来避免这种情况。例如,在Kubernetes中,您可以非常容易地运行部署的多个副本,并且您通常希望运行多个副本来获得基本冗余。现在,如果你的关机挂钩需要在Pod中运行一个命令,它会执行哪一个,其他两个会发生什么?如果哪一个不重要,那么启动一个专门的Job来进行清理也应该很好。如果每个Pod都需要运行它,那么在应用程序中设置关闭挂钩将更可靠,即使在非Kubernetes上下文中也能工作。