我有一个k8s作业pod,当我们使用kubectl apply部署服务时,它会向微服务发送rest调用来初始化redis。但是当aws集群重新启动时,k8s作业pod不会重新声明,因为它处于已完成状态,只有微服务pod会重新启动。
如何通过aws群集重启来重启已完成的作业pod?
发布于 2020-08-05 19:05:17
Kubernetes是为高可用性而设计的,能够在没有故障和停机的情况下工作,所以“重启kubernetes集群”并不是一个常见的用例。尽管我理解在某些情况下,您可能想要在周末关闭一个开发集群,以节省资金,并希望当您启动它时,它会恢复到以前的状态。
作业一旦完成就无法重新启动,因此这不是一个好的选择。
您可以使用部署并以initcontainer身份运行初始化脚本(发送rest调用的脚本),并在完成后运行pause container (这样它就不会使用资源)。
因此,现在当您重新启动cluser时,初始化pod将被调度,init容器将运行。请注意,在这种情况下,当pod运行的节点关闭时,pod将被重新调度,您的初始化pod将再次运行。这看起来是一个合理的选择,但您需要确保rest调用是幂等的。
你可以做的另一件事是使用redis oparator来为你处理配置。在运算符的this list上找到redis运算符。
https://stackoverflow.com/questions/63256053
复制相似问题