如何在Kubernetes中创建post-init容器?

时间:2017-05-30 13:34:55

标签: kubernetes

我正在尝试在K8上创建一个redis群集。在所需数量的redis容器联机后,我需要一个sidecar容器来创建集群。

我有2个集装箱,redis和一辆边车。我正在statefulset中运行它们,共有6个副本。我需要sidecar容器只为每个副本运行一次然后终止。它正在这样做,但K8s继续重新运行边车。

我尝试在容器级别设置restartPolicy,但它无效。似乎K8s只支持pod级别。我不能使用它,因为我希望重新启动redis容器,而不是边车。

post-init container之类的东西吗?我的边车需要在主redis容器后运行以使其加入群集。所以init container是没用的。

用K8s 1.6解决这个问题的最佳方法是什么?

2 个答案:

答案 0 :(得分:2)

我建议你使用Kubernetes Jobs:

https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/

此类作业将一直运行直到完成一次。在此作业中,您可以尝试检测是否所有必需节点都可用以形成群集。

答案 1 :(得分:0)

更好的答案是让边车进入无限的睡眠循环。如果它永远不会退出它将永远不会继续重新启动。资源限制可用于确保对群集的影响最小。