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

标签 mysql docker kubernetes microservices rancher

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

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

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

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

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

最佳答案

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

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

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

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

关于mysql - 如何在不在主机上发布端口的情况下访问在 docker 容器(由 Rancher 管理)中运行的 MySQL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54763290/

相关文章:

docker - 使用 .Net Core 3.1 api (docker) 运行 Heroku 时出错

docker - 如何将 docker toolbox、dockerfile、docker-compose 文件捆绑到可执行文件中?

git - 各个 git 存储库中的 Terraform Kubernetes 服务定义?

azure - Azure 中的 Kubeconfig

linux - 尝试在 mysqldump 不工作的情况下使用 bash 脚本

mysql - 执行 leftJoin 来获取缺失值,但得到的值不是零?

php - 当用户按下按钮时,如何从 View 中更改模型内的值?

mysql - 在 "case"的语句中使用 "where in"-

mongodb - Mongo Docker镜像-无法在其他端口上运行

amazon-web-services - 如何在 Kubernetes 中模拟电源故障