Kubernetes提交了Pod创作的工作?

时间:2018-03-15 13:50:32

标签: kubernetes kubernetes-pod

我有一个在Kubernetes中使用本地存储运行的数据库。每当我使用数据库启动Pod时,我想运行一个Job,它可以查看我们的备份并回填我们在本地磁盘上没有的任何数据。

我正在查看PostStart生命周期钩子,但这只是让我从主容器运行一个命令,这将是一个非常hacky方式提交此作业。除了编写自己的控制器之外,还有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

您可以使用安装在与主容器相同的卷中的init container,使用任何缺失的数据填充它,然后退出,以便主容器可以启动。

如果您需要将作业容器与主容器同时运行,则可以将上述容器作为第二个容器放入Pod中。

如果您需要创建一个实际的kubernetes Job,那么,正如您所说,我认为唯一的选择是创建自定义控制器或运行apiserver客户端,例如kubectl作为sidecar容器,但是您可以使用自动挂载到Pod中的ServiceAccount令牌来使用apiserver进行身份验证,然后将必要的RBAC规则应用于ServiceAccount以创建作业。您必须使用某种共享数据卷将相同的数据安装到Job和主Pod生成的Pod中,以便共享数据(还有一些其他可能的选项)。

答案 1 :(得分:0)

您可以使用Helm部署数据库并管理其生命周期。

Helm有很多type of hooks,你可以使用任何容器作为钩子。

我认为在您的情况下,您可以使用升级后+安装后的任何内容来执行您想要的任何操作。只需查看documentation