我有kubernetes pod,我将我的应用源代码安装为git卷。我尝试了各种设置,如何将源代码放入pod中,git卷最后是我最终得到的。
但现在我遇到了数据问题。我的应用程序中有一个文件目录(空),我需要在那里安装一个卷(保险丝)。但由于目标位于git卷上,我无法做到这一点。所以我想知道如何重新设计我的应用程序?
我是否应该将应用程序的源代码直接构建到映像中,以便我可以将数据卷装入其中,或者是否有某种方法可以将卷装入另一个中以便我不必调整任何内容?
我无法将目标目录移动到其他位置,因为它必须可以由应用程序在其目录中以及从Web上访问。
答案 0 :(得分:3)
我通常做的是在构建图像时将源添加到docker镜像。这是一个简单的过程,您可以始终将图像视为部署方面的黑盒子。这实现了有效地解耦图像的准备和在运行时部署/更新作为两个不同的过程。
我相信这就是为什么kubernetes通过交换完整的图像,而不是试图修复容器的内容,可以轻松地执行滚动升级以推出新的软件版本。它就像使用以下命令一样简单:
kubectl set image deployment/my-nginx-deployment my-nginx-image=TagXX
更换图像还可以确保清理任何碎片(例如,增长日志,临时文件等),并且它允许您带来更多更改,而不仅仅是更改源(例如升级服务器软件版本)。
它还允许您根据确切的映像执行测试/暂存,而不仅仅是在可能与生产服务器不同的服务器上进行代码部署。
您可以在Updating a Deployment
下的this page处阅读。