有什么办法可以编辑容器中的文件并重新启动它吗?

Tan*_*nak 5 kubernetes

有什么办法可以执行到容器中,然后编辑一些代码(例如:添加一些日志,编辑配置文件等)并重新启动容器以查看会发生什么?

我试图搜索这个,但没有发现任何帮助。

重点是,我想做一个快速调试,而不是做一个完整的集群部署。

Rad*_*nka 6

某些程序(如 nginx)支持配置重新加载而无需重新启动其进程,使用这些程序您只需kubectl exec更改配置并向主进程发送信号(即kubectl exec <nginx_pod> kill -HUP 1)。虽然这是软件的一个功能,所以很多人不会考虑到这一点。

容器在设计上是不可变的,因此它们每次都会以干净的状态重新启动。也就是说,没有简单的方法可以做到这一点,有一些黑客方法可以实现它。

我能想到的一种方法是修改节点上的映像,然后重新启动容器。如果您可以 ssh 进入节点并直接访问 docker,则可以识别具有修改文件的容器,并docker commit在同一标签下提交这些更改。此时,带有该标签的本地容器已包含您的更改,因此如果您重新启动它(不是重新安排,因为它可能在不同的节点上启动),它将显示您的更改(假设您不使用pullPolicy: always)。

再说一次,这不是它应该使用的方式,但可以实现。


Gra*_*ton 3

如果重新启动 Pod,对本地容器文件系统的任何更改都将丢失。您需要确定您正在使用的应用程序堆栈是否可以在不实际退出的情况下执行内部重新启动。

您使用什么语言/应用程序堆栈?

  • 这如何被认为是正确答案? (2认同)