【问题标题】:How to connect an AWS RDS Database instance running on private PVC through kubectl如何通过 kubectl 连接在私有 PVC 上运行的 AWS RDS 数据库实例
【发布时间】:2021-01-20 08:58:42
【问题描述】:

我正在尝试通过

远程访问在私有 PVC 上运行的 AWS RDS 数据库实例

kubectl 端口转发

RDS 数据库公共可访问性设置为“否”,而且我有一个 EKS 集群在同一个 RDS PVC 上运行,EKS 的 pod 和服务能够与 AWS RDS 通信。

到目前为止,我已经创建了以下服务

kind: Service
metadata:
  name: postgres-service
spec:
  type: ExternalName
  externalName: xxx-xxx.xxxxxxx.eu-xx-1.rds.amazonaws.com

下面是我执行的kubectl命令

kubectl  run -it --rm --image=postgres postgres-client  -- postgres-service --host=xx-xx.xx.eu-west-1.rds.amazonaws.com  --port=5432 --username=xxx --password=xxx --dbname=xxx

我得到的结果是

error: timed out waiting for the condition

【问题讨论】:

  • 你是指我认为的 VPC 还是 PVC?在第一行的问题?

标签: amazon-web-services kubernetes amazon-rds amazon-eks


【解决方案1】:

如果您不想使用 kubectl,您可以在 EKS 集群中全职使用 postgress 客户端 pod 设置。

否则你可以像这样运行命令:

kubectl run postgresql-client --rm --tty -i --restart='Never' --namespace default --image bitnami/postgresql --env="PGPASSWORD=<YOUR_PASSWORD>" --command -- psql --host <YOUR_HOSTNAME=SVC_NAME_OR_IP> -U <HERE_USERNAME> 

确保您使用正确的命名空间名称和服务名称。

两者都在同一个 VPC 中,这意味着您可以通过内部地址或 IP 直接连接,而无需创建外部服务。

【讨论】:

  • 谢谢 上面的命令有效,我想试试你建议的第二种方法,即设置 Postgres 客户端,我有一个 Postgres 客户端 pod 正在运行,如何在不使用的情况下访问 RDS 数据库kubectl ?
  • 很高兴看到@Kamal。我不确定您使用的是哪个 PG 客户端,如果您使用的是 cli,您可以在客户端 POD 中执行 exec 并连接到数据库。
  • 您也可以运行 GUI PG 客户端 POD 并使用它连接数据库。码头工人示例:hub.docker.com/r/fenglc/pgadmin4
  • 谢谢 Harsh ,我已经尝试了 exec kubectl 命令它工作,让我试试你建议的 GUI PG 客户端的第三种方式,我会更新你
  • 苛刻,不能将私有数据库连接到 PowerBI 或外部工具吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-06
  • 2018-06-27
  • 2019-06-03
  • 2019-07-05
  • 2021-09-05
  • 2020-11-26
  • 2017-05-22
相关资源
最近更新 更多