如何在Kubernetes中创建后初始化容器?

jbr*_*own 9 kubernetes

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

我有2个集装箱redis和一辆小汽车。我正在statefulset用6个副本运行它们。我需要sidecar容器为每个副本仅运行一次然后终止。它正在这样做,但是K8s不断重新运行边车。

我尝试restartPolicy在容器级别设置a ,但这是无效的。似乎K8s仅在Pod级别支持此功能。我不能使用它,因为我希望redis容器重新启动,而不是重新启动。

有没有类似的东西post-init container?我的sidecar需要运行redis容器之后才能使其加入集群。所以init container没有用。

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

Jav*_*ron 5

我建议您使用Kubernetes Jobs:

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

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


jbr*_*own 4

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