【问题标题】:Issue with Database Connect from K8s pod来自 K8s pod 的数据库连接问题
【发布时间】:2021-07-01 06:48:57
【问题描述】:

我已成功将 Spring-Boot-API 的 pod 和服务部署到 AWS-Kubernetes-Cluster (EKS)

应用程序连接到 MySQL RDS。 RDS 和 EKS 位于不同的 VPC。我配置了对等连接以及 VPC 中的路由。

数据库是公开的,我可以从本地环境进行连接。

对于集群,我在deployment-YAML中配置了环境变量并注入了config-map(用户和密码的秘密)

当 pod 启动时,我收到以下错误: java.sql.SQLException: Access denied for user 'admin'@'172.31.35.70' (using password: YES)

我猜这是网络问题,因为用户名已正确解析!

【问题讨论】:

  • 通常如果是网络问题,您会收到网络错误。您收到身份验证错误,这意味着您可以实际连接以确认您的访问被拒绝
  • 这是一个有用的提示。但是为什么用户被正确注入而密码显然没有呢?
  • 不知道不过好像排除网络

标签: kubernetes amazon-rds amazon-eks


【解决方案1】:

第 1 条规则永远不要公开您的数据库。如果您查看日志,黑客现在可能正在暴力破解它。

您收到 AccessDenied 的事实表明网络是正确的,但您提供的密码有问题。

我会在与 k8s pod 相同的子网中创建一个堡垒,然后使用用户名和密码从那里连接到数据库。

【讨论】:

  • 这只是一个测试数据库!正如我所写的,我可以从应用程序连接到 k8 之外的数据库。我想保留单独的 VPC 并为此寻找解决方案。
  • 您说您可以从本地连接到数据库。我是说从您的 k8s 应用程序子网内的实例连接到数据库,以便您可以验证它是否是网络问题。
  • 正如@Nick.McDermaid 所说的那样——这不是网络问题。
  • 我通过停止数据库对此进行了测试 - 然后我得到一个不同的错误,指向网络问题。错误是密码不正确。我使用 secret.map 部署密码,其中密码为 base64-.encoded。似乎解码产生了不同的结果,或者根本没有解码。有趣的是,用户(也来自秘密地图)被正确解码(请参阅错误消息,说明 admin@... 无权访问)。为了测试这一点,我将凭据放入 configmap(未编码)
猜你喜欢
  • 2019-10-08
  • 2021-12-13
  • 2020-07-23
  • 2013-07-15
  • 1970-01-01
  • 1970-01-01
  • 2019-10-22
  • 2020-04-06
相关资源
最近更新 更多