Docker 在库伯内特斯维持一个豆荚的生命

Docker 在库伯内特斯维持一个豆荚的生命,docker,kubernetes,kubernetes-pod,docker-container,Docker,Kubernetes,Kubernetes Pod,Docker Container,我正在将一个应用程序从Windows server迁移到运行在云上的Kubernetes。我能够在Kubernetes中成功启动该应用程序。接下来是恢复,提供了一个脚本来将数据恢复到新实例,但应该在应用程序实例关闭时运行该脚本。有一个名为stop.sh的脚本用于关闭该应用程序的实例。恢复和关机脚本都应该在POD内运行。我使用“Kubectl exec”进入POD,然后尝试使用stop.sh关闭实例。然后实例将关闭,但POD也将随之退出,我无法在POD内运行restore.sh脚本。因此,有没有一

我正在将一个应用程序从Windows server迁移到运行在云上的Kubernetes。我能够在Kubernetes中成功启动该应用程序。接下来是恢复,提供了一个脚本来将数据恢复到新实例,但应该在应用程序实例关闭时运行该脚本。有一个名为stop.sh的脚本用于关闭该应用程序的实例。恢复和关机脚本都应该在POD内运行。我使用“Kubectl exec”进入POD,然后尝试使用stop.sh关闭实例。然后实例将关闭,但POD也将随之退出,我无法在POD内运行restore.sh脚本。因此,有没有一种方法可以让POD保持活动状态,即使在关闭应用程序实例以运行恢复脚本之后

问候,,
John

POD意味着在主进程运行时保持活动状态,当主进程关闭时,POD将终止

您想要的不是如何保持POD的活力,而是如何重构应用程序以正确使用Kubernetes

您以前在脚本中的恢复阶段很可能会作为脚本运行。 Init容器是在Pod中的其他容器之前运行的专用容器,因此您可以在主应用程序启动之前运行恢复逻辑

下一个阶段是启动应用程序,创建容器时应用程序应在容器内自行启动,因此init容器不应影响其生命周期。应用程序将假定init容器已经完成了它的工作,并且环境设置正确

下一个阶段是终止,当容器启动或停止时,Kubernetes将触发
PostStart
PreStop
。您可能需要使用
PreStop
钩子来执行自定义脚本


上述场景假设对应用程序的更改最小,如果您愿意重构应用程序以将其部署到Kubernetes,则可以通过其他方式实现,如使用持久卷存储数据并在容器启动时重新使用,因此,您不需要一直进行备份和恢复。

查看此帖子:您可以让容器运行自己的关闭序列吗?如果主容器进程崩溃,或者Kubernetes需要杀死pod,因为它的节点正在关闭,您预计会发生什么?如何支持从部署运行的pod的多个副本?(对于常规操作,我会避免使用
kubectl exec