我想暂停在kubernetes pod中运行的docker容器中的主进程。我试图通过运行
来做到这一点kubectl exec <pod-name> -c <container-name> kill -STOP 1
但信号不会停止容器。调查其他方法,看起来docker stop --signal=SIGSTOP
或docker pause
可能有效。但是,据我所知,kubectl exec总是在容器的上下文中运行,并且这些命令需要在容器上下文之外的pod中运行。 kubectl的界面是否允许这样的事情?我可以通过调用底层kubernetes API来实现这种行为吗?
答案 0 :(得分:6)
您可以将副本集设置为0,这会将正在工作的部署数设置为0。这虽然不是暂停,但是它确实会停止部署,直到您将部署数设置为> 0。
kubectl scale --replicas=0 deployment/<pod name> --namespace=<namespace>
答案 1 :(得分:4)
因此kubernetes不支持暂停pod,因为它是一种VM类型的行为,并且由于启动新的更便宜,它只是在发生故障时安排新的pod。实际上你的豆荚应该是无国籍的。任何需要存储状态的应用程序都应该在pod中安装一个持久卷。
Kubernetes的简单机制(和一般行为)是如果包含者内部的过程失败,kuberentes将通过创建一个新的pod来重新启动它。
如果你也评论你想要达到的最终目标,我想我可以帮助你更好。