我正在尝试在K8上创建一个redis群集。在所需数量的redis容器联机后,我需要一个sidecar容器来创建集群。
我有2个集装箱,redis
和一辆边车。我正在statefulset
中运行它们,共有6个副本。我需要sidecar容器只为每个副本运行一次然后终止。它正在这样做,但K8s继续重新运行边车。
我尝试在容器级别设置restartPolicy
,但它无效。似乎K8s只支持pod级别。我不能使用它,因为我希望重新启动redis
容器,而不是边车。
有post-init container
之类的东西吗?我的边车需要在主redis
容器后运行以使其加入群集。所以init container
是没用的。
用K8s 1.6解决这个问题的最佳方法是什么?
答案 0 :(得分:2)
我建议你使用Kubernetes Jobs:
https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/
此类作业将一直运行直到完成一次。在此作业中,您可以尝试检测是否所有必需节点都可用以形成群集。
答案 1 :(得分:0)
更好的答案是让边车进入无限的睡眠循环。如果它永远不会退出它将永远不会继续重新启动。资源限制可用于确保对群集的影响最小。