go - 是否可以在 POD 运行时替换容器中的可执行文件?
问题描述
我正在 Ubuntu 上开发一个 Go 可执行文件并在 minikube 中运行一个 kubernetes 集群。minikube 中运行的 pod+container 是基于 Ubuntu 的,我只想替换容器中的可执行文件。或多或少绕过了重新制作容器的需要,因为可执行文件是唯一需要更改的东西。当我的更改“准备好”时,我计划重新制作容器所基于的图像等,但那是在路上。
我真的希望迭代得更快一些。
这可能吗?有没有更好的办法?
解决方案
仅出于开发目的(相当 hacky 的解决方案),您可以让 Ubuntu-Go 容器运行tail -f /dev/null
以防止其完成,并使用 ahostPath
将包含可执行文件的路径安装到容器中。您可以通过运行 a 来运行您的 Go 应用程序,kubectl exec
并且您对主机上的应用程序所做的任何更改都将反映在容器中。您可以在kubectl exec
更新可执行文件时再次重新启动应用程序。
这是关于如何使用 minikube 的 hostPath 的一个很好的自述文件。
请记住在生产环境中使用正确的二进制文件重建容器,定义正确的入口点,并修复部署/pod 定义以排除 hostPath。
希望这可以帮助!
推荐阅读
- amazon-web-services - 如何在 AWS CLI 中获取附加到 ELB 的 SSL 证书列表
- java - 如何使用 mybatis 在 postgres 中将 int[] 映射到 integer[]
- html - 打开带有重定向到新页面的主题行的电子邮件
- robotframework - 如何编写 Robot Frame Work 中“点击链接”的代码?
- amazon-web-services - 无法使用路由 53 弹性 IP 连接 Godaddy 域
- angular - 角度构建是否包括规格文件大小?
- node.js - 如何在 express js 中授予用户特定的文件访问权限
- javascript - axios 发布请求的标头被视为参数
- excel - VBA - 如何在从原始行复制一些数据时合并 2 列
- web-services - 如何从 .NET Core 动态调用 Web 服务