【发布时间】:2019-04-26 18:36:19
【问题描述】:
背景
我有一个在桌面 PC 上运行的大型 Python 服务,我需要让它作为 K8S 部署的一部分运行。我希望我必须进行一些小的更改才能使服务在部署/pod 中运行,然后才能正常工作。
问题
到目前为止,如果我在 Python 代码中遇到问题,需要一段时间来更新代码,然后将其部署以进行另一轮测试。例如,我必须:
- 修改我的 Python 代码。
- 重建 Docker 容器(包括我的 Python 服务)。
-
scp将 Docker 容器转移到 Docker Registry 服务器。 -
docker load镜像,更新标签,推送到Registry后端DB。 - 手动终止当前运行的 Pod,以便部署使用新的 Docker 映像重新启动所有 Pod。
每次我需要调试一个小问题时,这都需要大量的准备时间。理想情况下,我更喜欢能够只修改已经在 Pod 上运行的 Python 代码的副本,但我不能杀死它(因为 Python 服务是默认启动的应用程序,使用 PID=1),并且K8S 不支持重新启动 pod(据我所知)。或者,如果我杀死/启动另一个 pod,它不会对我之前正在处理的 pod 进行本地更改(这当然是设计使然;但对我的调试工作没有帮助)。
问题
有没有更好/更快的方法来快速部署(实验/调试)更改到我正在测试的容器,而无需花费几分钟重新创建容器映像、重新部署/标记/推送它们等?如果我可以找到并挂载(读写)Docker 映像,那可能会有所帮助,因为我可以直接编辑其中的数据(即新的 Python 更改),然后杀死 pod,以便部署重新创建它们。
【问题讨论】:
标签: docker debugging kubernetes