许多开发人员出于各种原因和查询而使用ssh上的mysql connect来访问生产数据库
在将mysql容器成功部署到数字海洋kubernetes集群后 我能够通过:s进入ssh
kubectl --kubeconfig="kubeconfig.yaml" exec -it vega-mysql-5df9b745f9-c6859 -c vega-mysql -- /bin/bash
我的问题是我该如何将诸如navicat-sequel pro或mysql workbench之类的应用程序远程连接到此Pod?
答案 0 :(得分:3)
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充当从计算机上的本地端口到Pod的TCP代理。然后,使用您选择的任何MySQL客户端连接到127.0.0.1:3306
:
mysql -u youruser -p -h 127.0.0.1
答案 1 :(得分:0)
我通过将mysql暴露给具有随机端口的服务来实现这一点
kubectl --kubeconfig=vega-kubeconfig.yaml expose deployment mysqldeployment --type=NodePort --name=nginx --port=3306 --target-port=3306
并通过没有ssh隧道的客户端连接到它。
但是@helmbert解决方案也很好