首页 > 解决方案 > 是否可以在 POD 运行时替换容器中的可执行文件?

问题描述

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

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

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

标签: gokubernetescontainersworkflow

解决方案


仅出于开发目的(相当 hacky 的解决方案),您可以让 Ubuntu-Go 容器运行tail -f /dev/null以防止其完成,并使用 ahostPath将包含可执行文件的路径安装到容器中。您可以通过运行 a 来运行您的 Go 应用程序,kubectl exec并且您对主机上的应用程序所做的任何更改都将反映在容器中。您可以在kubectl exec更新可执行文件时再次重新启动应用程序。

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

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

希望这可以帮助!


推荐阅读