gpt4 book ai didi

kubernetes - Initcontainer 与 Helm Hook 安装后

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

Helm Hooks post-install 和 Kubernetes initcontainers 之间有什么区别?我的理解是,Hooks 用于在 Pod 生命周期的不同阶段定义一些操作,在这种情况下 - 安装后,另一方面,initcontainers 允许在将容器部署到 Pod 之前初始化容器。

据我所知,

post-install 和 initcontainer 允许做同样的事情,即初始化数据库。

这样对吗?哪种方法更好?

最佳答案

对于数据库设置,我更喜欢 Helm Hook ,但即便如此也有一些微妙之处。

假设您的服务作为一个 Deployment 运行,具有 replicas: 3 以实现一点冗余。这些副本中的每一个都将运行一个 init 容器,如果它在 pod 规范中指定,则无需任何同步。如果其中一个 pod 崩溃,或者它的节点发生故障,它的替代者将再次运行 init 容器。对于您正在谈论的那种设置任务,您不想经常重复它。

这里的根本区别在于 Helm Hook 是一个单独的 Kubernetes 对象,通常是一个作业。您可以安排此作业在每次 helm 升级 时只运行一次,而在其他任何时候都不运行,这使其成为运行迁移等操作的合理位置。

这里有一个重要的微妙之处,即您可以同时运行一项服务的多个版本。使用前面的 replicas: 3 部署,然后 helm upgrade --set tag=something-newer。 Deployment controller 将首先使用新镜像启动一个新的 pod,只有当它启动并运行后,它才会拆除旧的 pod,现在您将两个版本结合在一起。如果您 helm rollback 到旧版本,也会发生类似的事情。这意味着您需要对没有正确架构的数据库有一定的容忍度。

如果该作业更像是预加载一些初始数据的“种子”作业,则这更易于管理:在安装后 Hook 中执行,您希望它只运行一次。您无需在每次升级(作为升级后 Hook )或每次 pod 启动(作为初始化容器)时重复它。

关于kubernetes - Initcontainer 与 Helm Hook 安装后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63030663/

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