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

dle*_*rob 3 mysql docker kubernetes microservices rancher

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

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

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

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

我们有什么想法可以去做这件事吗?我们是否能够以某种方式临时公开/发布正在运行的 MySQL 容器的端口,以便我们可以通过 MySQL Workbench 连接到它,或者是否有其他方法来完成此任务?

Pau*_*tts 5

如果用户有权访问集群的命令行,他们可以在本地开发计算机和包含 MySQL 容器的 pod 之间kubectl设置临时端口转发。

例如,mypod-765d459796-258hzPod 位于何处,您想要连接到该 Pod 的端口 3306:

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

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