Mysql 通过 ssh 远程连接到 kubernetes pod
Mysql remote connect over ssh to a kubernetes pod
出于各种原因和查询,许多开发人员使用 mysql 通过 ssh 连接来访问生产数据库
成功部署 mysql 容器到数字海洋 kubernetes 集群后
我能够通过 ssh 进入 pod:
kubectl --kubeconfig="kubeconfig.yaml" exec -it vega-mysql-5df9b745f9-c6859 -c vega-mysql -- /bin/bash
我的问题是如何远程连接应用程序,例如:navicat - sequel pro 或 mysql workbench 到这个 pod?
Nitpick:尽管您可以使用它来启动交互式 shell,但 kubectl exec
与 SSH 不同。出于这个原因,支持 SSH 隧道连接的常规 MySQL 客户端不(并且可能永远不会)支持连接到通过 kubectl exec
.
隧道连接的 MySQL 服务器
替代解决方案:使用 kubectl port-forward
将 Pod 的 MySQL 服务器端口 3306 转发到本地计算机:
kubectl port-forward vega-mysql-5df9b745f9-c6859 3306:3306
这将指示 kubectl 作为 TCP 代理从您机器上的本地端口进入 Pod。然后,使用您选择的任何 MySQL 客户端连接到 127.0.0.1:3306
:
mysql -u youruser -p -h 127.0.0.1
我通过将 mysql 暴露给具有随机端口
的服务来实现这一点
kubectl --kubeconfig=vega-kubeconfig.yaml expose deployment mysqldeployment --type=NodePort --name=nginx --port=3306 --target-port=3306
并在没有 ssh 隧道的情况下通过我的客户端连接到它。
但是@helmbert 解决方案也很好
出于各种原因和查询,许多开发人员使用 mysql 通过 ssh 连接来访问生产数据库
成功部署 mysql 容器到数字海洋 kubernetes 集群后 我能够通过 ssh 进入 pod:
kubectl --kubeconfig="kubeconfig.yaml" exec -it vega-mysql-5df9b745f9-c6859 -c vega-mysql -- /bin/bash
我的问题是如何远程连接应用程序,例如:navicat - sequel pro 或 mysql workbench 到这个 pod?
Nitpick:尽管您可以使用它来启动交互式 shell,但 kubectl exec
与 SSH 不同。出于这个原因,支持 SSH 隧道连接的常规 MySQL 客户端不(并且可能永远不会)支持连接到通过 kubectl exec
.
替代解决方案:使用 kubectl port-forward
将 Pod 的 MySQL 服务器端口 3306 转发到本地计算机:
kubectl port-forward vega-mysql-5df9b745f9-c6859 3306:3306
这将指示 kubectl 作为 TCP 代理从您机器上的本地端口进入 Pod。然后,使用您选择的任何 MySQL 客户端连接到 127.0.0.1:3306
:
mysql -u youruser -p -h 127.0.0.1
我通过将 mysql 暴露给具有随机端口
的服务来实现这一点kubectl --kubeconfig=vega-kubeconfig.yaml expose deployment mysqldeployment --type=NodePort --name=nginx --port=3306 --target-port=3306
并在没有 ssh 隧道的情况下通过我的客户端连接到它。
但是@helmbert 解决方案也很好