Mysql удаленного подключения через SSH к kubernetes pod
Многие разработчики используют mysql connect через ssh для доступа к производственной базе данных по различным причинам и запросам.
после успешного развертывания контейнера mysql в цифровом океаническом кластере kubernetes, я могу подключиться к нему через модуль:
kubectl --kubeconfig="kubeconfig.yaml" exec -it vega-mysql-5df9b745f9-c6859 -c vega-mysql -- /bin/bash
мой вопрос, как я могу удаленно подключить приложения, такие как: Navicat - Sequel Pro или MySQL Workbench к этому модулю?
2 ответа
Nitpick: Даже если вы можете использовать его для запуска интерактивной оболочки, kubectl exec
это не то же самое, что SSH. По этой причине обычные клиенты MySQL, которые поддерживают SSH-туннельные соединения, не поддерживают (и, вероятно, никогда не будут) поддерживать соединение с MySQL-сервером, туннелируемым через kubectl exec
,
Альтернативное решение: использовать kubectl port-forward
чтобы перенаправить порт MySQL сервера Pod 3306 на ваш локальный компьютер:
kubectl port-forward vega-mysql-5df9b745f9-c6859 3306:3306
Это даст команду kubectl действовать как TCP-прокси с локального порта на вашей машине в Pod. Затем подключитесь к 127.0.0.1:3306
с любым клиентом MySQL по вашему выбору:
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 тоже хорошо