Kubernetes - 通过 ssh 连接到远程数据库服务器



我们正在使用 gcloud/docker/K8 将我们的 Web 应用程序迁移到分布式应用程序模型。 我们有一个远程数据库服务器,它配置为只接受来自另一个远程服务器的连接,即要访问此数据库,您必须首先使用用户名和密码通过 SSH 连接到一台服务器,然后使用通常的用户和密码通过 MySQL 主机名连接到数据库。 一直在努力打击谷歌,试图找出我们如何配置我们的 K8 pod 来建立这种连接,似乎有许多不同的方法可能有效,但还没有记录在案的"确定火"方式。我们的微服务是用Lumen编写的,能够成功连接到我们的dev db,该数据库也是远程的,但不是ssh。 我们最好的方法是什么? 尝试配置 Dockerfile 以让 pods ssh 出来? 或者我们应该尝试将 K8 服务连接到数据库并让 pod 连接到

该数据库?

您有三个选择:

  1. 重新配置您的网络层,以允许从您的 Kubernetes 节点"出口地址"进行远程访问。也称为"在防火墙上打洞" - 这可能不是一种选择,但如果是,它是最简单的解决方案。
  2. 使用 ssh 隧道在节点和数据库服务器之间建立"隧道"连接 - 可靠性不高,容易受到网络连接和可恢复性问题的影响。
  3. 在数据库服务器(或同一子网中的节点(上部署 openvpn,并在节点 POD 子网内运行 vpn 客户端(也可以使用 openvpn 完成(——可实现、安全、工作量大,但可行且可持续。有关包含文档的完整端到端示例,请参阅 https://github.com/mateothegreat/k8-byexamples-openvpn。

最新更新