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

标签 docker ssh kubernetes lumen devops-services

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

最佳答案

你有三个选择:

  • 重新配置您的网络层以允许从您的 Kubernetes 节点“导出地址”进行远程访问。也称为“在防火墙上打洞”——这可能不是一种选择,但如果是,它是最简单的解决方案。
  • 使用 ssh 隧道在您的节点和数据库服务器之间建立“隧道”连接——可靠性不高,容易受到网络连接和可恢复性问题的影响。
  • 在数据库服务器(或同一子网中的节点)上部署 openvpn 并在节点 POD 子网中运行 vpn 客户端(也可以使用 openvpn 完成)——可靠、安全、工作量小,但可行且可持续。见 https://github.com/mateothegreat/k8-byexamples-openvpn完整的端到端示例和文档。
  • 关于docker - Kubernetes - 通过 ssh 连接到远程数据库服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53000770/

    相关文章:

    kubernetes - 如何确定作业是否失败

    ubuntu - 准备 VPS 以使用 Kubespray 安装 Kubernetes

    amazon-web-services - docker AWS SAM本地未连接到docker dynamodb

    docker - 来自守护程序的错误响应:无效的容器名称(tomcat:8.0),仅允许[a-zA-Z0-9] [a-zA-Z0-9 _.-]

    php - 在本地主机上使用Apache的Docker php:ERR_SSL_PROTOCOL_ERROR

    java - Maven 不会使用公钥进行部署

    macos - vi命令:将所有行从远程文件复制到剪贴板,并将其粘贴到主机编辑器

    docker - 将 'Docker Run' 选项传递给 Mesos/Marathon/Chronos

    ruby-on-rails - 使用Passenger 部署rails 应用程序的最快方法

    kubernetes - 使用KubernetesExecutor的pod_mutation_hook函数不适用于在Kubernetes中运行的 Airflow