我想将主进程挂在运行在kubernetes容器中的docker容器中。我试图通过运行来做到这一点
kubectl exec <pod-name> -c <container-name> kill -STOP 1
Run Code Online (Sandbox Code Playgroud)
但该信号不会停止容器。研究其他方法,它看起来像docker stop --signal=SIGSTOP
或docker pause
可能起作用。但是,据我所知,kubectl exec总是在容器的上下文中运行,而这些命令将需要在容器的上下文之外的pod中运行。kubectl的界面是否允许这样的事情?我是否可以通过调用基础kubernetes API来实现此行为?
小智 10
您可以将副本集设置为0,这会将正在工作的部署数设置为0。这不是一个暂停,但是它确实停止了部署,直到您将部署数设置为> 0。
kubectl scale --replicas=0 deployment/<pod name> --namespace=<namespace>
Run Code Online (Sandbox Code Playgroud)
因此kubernetes不支持挂起Pod,因为这是一种VM行为,而且由于启动新的Pod更便宜,因此它仅在发生故障的情况下计划新的Pod。实际上,您的广告连播应该是无状态的。并且任何需要存储状态的应用程序都应在pod内安装一个永久卷。
Kubernetes的简单机制(和一般行为)是,如果容器内的进程失败,则Kuberentes将通过创建新的Pod重新启动它。
如果您还评论您要达到的最终目标,我想我可以为您提供更好的帮助。
归档时间: |
|
查看次数: |
9950 次 |
最近记录: |