每次部署只运行一次初始化容器

Geo*_*rov 10 kubernetes

我在部署中使用 initContainers。为每个 Pod 创建一个 init 容器。

是否可以为整个部署只获得一个 init 容器?

编辑:

用例:需要在创建 pod 之前运行一些数据库迁移命令。所以我将这些命令放在 init pods 中。

问题: - 每次创建 Pod 时,都会创建 init 容器 - 向上扩展时会创建 init 容器

解决方案:我终于在这篇文章中找到了一个很好的例子来解决这个问题

Rad*_*nka 6

虽然不可能让整个部署共享一个 init 容器(根据定义这是不可能的,因为 kube 中的工作负载调度单位是 pod),但您可以使用一些东西来轻松获得类似的功能。

实现此目的的一种方法是在每个 pod 上都有一个 init 容器,等待成功执行特定作业,以及执行实际 init 逻辑的作业。

另一种方法是在 init 容器中使用领导者选举,这样只有一个执行,其余的只需等待锁被释放,然后才能成功退出。