如何在未在主机上发布端口的情况下访问在docker容器(由Rancher管理)中运行的MySQL?

时间:2019-02-19 09:51:42

标签: mysql docker kubernetes microservices rancher

我正在使用Rancher来管理负责编排Docker容器的Kubernetes。

我们每个需要持久性的微服务(在容器中运行)都有一个对应的MySQL容器。例如。 MyApp在名为MyApp的容器中运行,并持久存在于名为MySQL-MyApp的MySQL容器中。

我们有很多。我们不想定义MySQL容器在哪个节点上运行,因此,如果该端口与该主机上的任何其他端口冲突,则无法在该主机上发布/公开该端口。

但是,如果其中一项微服务的某些数据出了问题,我们需要能够使用MySQL Workbench访问相关容器中的MySQL实例,以便从我们外部计算机上查看/编辑数据库中的数据物理网络。

有什么想法我们将如何做到这一点?我们是否可以通过某种方式临时为运行中的MySQL容器临时公开/发布端口,以便我们可以通过MySQL Workbench连接到它,或者还有其他方法可以完成此操作?

1 个答案:

答案 0 :(得分:3)

如果用户可以访问群集的kubectl命令行,则可以在本地开发计算机和包含您的MySQL容器的pod之间设置临时port-forward

例如,mypod-765d459796-258hz是一个容器,并且您要连接到该容器的端口3306:

kubectl port-forward mypod-765d459796-258hz 12345:3306

然后,您可以将MySQL Workbench连接到localhost:12345,它将转发到Kubernetes中的MySQL容器。