gpt4 book ai didi

kubernetes - 如何使用仅运行一次的 init 容器复制 pod?

转载 作者:行者123 更新时间:2023-12-02 11:30:50 25 4
gpt4 key购买 nike

如果我想运行某个需要一次性初始化任务的容器的多个副本,是否有标准或推荐的做法?

可能性:

  • 使用 StatefulSet 即使在初始化后它不是必需的,并且有 init 容器来检查它们是否在集合中的第一个 pod 上,否则什么都不做。 (如果出于其他原因需要 StatefulSet,这几乎肯定是最简单的答案。)
  • 使用使用领导者选举或一些类似方法的 init 容器只选择其中一个来进行初始化。
  • 使用 init 容器,并确保多个副本可以安全地并行运行。可能是理想的,但安排起来并不总是那么简单。 (特别是在滚动更新期间 pod 随机失败的情况下,替换旧 pod 在启动新 pod 的同时运行其 init。)
  • 将单独的作业(或单独的部署)与单个副本一起使用。可能会使初始化变得容易,但会使管理它与 CI/CD 管道中的主容器之间的依赖关系变得更加困难(我们没有使用 Helm,但这与安装后/升级后 Hook 大致相当) .
  • 最佳答案

    “某些容器的副本”依赖于“一次性初始化任务”这一事实意味着应用程序架构不太适合 Kubernetes 范式。这就是为什么必须考虑像 Helm 这样的 k8s 之上的第三方管理器的参与(如 Eduardo BaitelloMatt 所建议的)。

    为了保持纯 Kubernetes 方法,最好重新设计您的应用程序,使其组件作为独立或松散耦合的微服务(包括初始化任务)工作。
    similar question最近在这里讨论过。

    至于问题中列出的可能性,也许是 InitContainers 的第一个选项。和 StatefulSets在纯 Kubernetes 中是可行的。

    关于kubernetes - 如何使用仅运行一次的 init 容器复制 pod?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57714921/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com