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

How do I access MySQL running in a docker container (managed by Rancher) without publishing the port on the host?

我正在使用 Rancher 来管理 Kubernetes,它会编排我的 Docker 容器。

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

的 MySQL 容器中

我们有很多这样的。我们不想定义 MySQL 容器在哪些节点上运行,因此不能 publish/expose 主机上的端口,以防它与该主机上的任何其他端口发生冲突。

但是,如果我们的一个微服务的某些数据出现问题,我们需要能够使用 MySQL Workbench 访问相关容器中的 MySQL 实例以view/edit 数据库中的数据来自我们物理网络上的外部机器。

知道我们将如何着手做这件事吗?我们是否能够以某种方式临时 expose/publish 一个 MySQL 容器的动态端口 运行 以便我们可以通过 MySQL Workbench 连接到它,还是有其他方法可以做到这一点?

如果用户有权访问集群的 kubectl 命令行,他们可以在本地开发机器和包含您的 MySQL容器。

例如,其中 mypod-765d459796-258hz 是一个 pod,您想要连接到该 pod 的端口 3306:

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

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