是否可以在 运行 时替换 POD 中容器中的可执行文件?

Is it possible to replace executable in a container in a POD while it's running?

我正在 Ubuntu 和 运行 minikube 中的 kubernetes 集群上开发 Go 可执行文件。 minikube中运行的pod+container是基于Ubuntu的,我只是想替换容器中的可执行文件。或多或少绕过了重新制作容器的需要,因为可执行文件是唯一需要更改的东西。当我的更改是 'ready' 我计划重新制作容器所基于的图像等,但那是在路上。

我真的希望迭代速度更快一些。

这可能吗?有没有更好的方法?

仅用于开发目的(非常 hacky 的解决方案),您可以让 Ubuntu-Go 容器 运行ning tail -f /dev/null 阻止它完成,并使用 hostPath 将包含可执行文件的路径挂载到容器中。您可以通过 运行 宁 kubectl exec 运行 您的 Go 应用程序,您对主机上的应用程序所做的任何更改都将反映在容器中。每当更新可执行文件时,您都可以重新启动应用程序,再次使用 kubectl exec

Here 是关于如何使用 minikube 的 hostPath 的很好的自述文件。

请记住在生产环境中使用正确的二进制文件重建您的容器,定义正确的入口点,并修复您的 deployment/pod 定义以排除主机路径。

希望对您有所帮助!