【问题标题】:AWS Kubernetes RDS connectionAWS Kubernetes RDS 连接
【发布时间】:2018-08-19 02:33:51
【问题描述】:

我的 AWS Kubernetes 实例出现问题。

我正在尝试让我的 django 实例通过 DB 端点连接到 RDS 服务。

DATABASES = {
    'default': {
        'ENGINE': 'django.contrib.gis.db.backends.postgis',
        'NAME': os.environ['NAME'],
        'USER': os.environ['USER'],
        'PASSWORD': os.environ['PASSWORD'],
        'HOST': os.environ['HOST'],
        'PORT': os.environ['PORT']
    }
}

主机字符串类似于 service.key.region.rds.amazonaws.com 并通过 deploy.yml 中的 env 传递给容器

containers:
  - name: service
    env:
      - name: HOST
        value: service.key.region.rds.amazonaws.com

这个设置在 kubernetes 本地工作,但当我把它放在我在 AWS 上的集群中时就不行了。它会返回以下错误:

django.db.utils.OperationalError: could not translate host name

有什么建议,或者我在 AWS 喜欢如何处理事情方面遗漏了什么?

【问题讨论】:

  • 您在使用 EKS 吗?
  • 您的 manage.py 文件是否有可能读取错误的设置文件?问是因为我看到了this SO thread,感觉可能与您的问题有关,尽管是关于 Docker。
  • 不使用 kubeadm 滚动我自己的,1 个主节点 1 个节点。尝试以艰难的方式学习。
  • 您的 AWS 部署现在是否与您的 RDS 在同一个 VPC 中?
  • @ingernet 我刚刚仔细检查了我的设置文件,并且 base.py 不包含任何数据库配置。我改变了一些东西并重建了图像,以确保我仍然得到同样的错误。好主意,谢谢你的建议。

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


【解决方案1】:

假设您的 AWS 部署现在与您的 RDS 在同一个 VPC 中,那么您将需要更改您的主机以使用私有 IP。

【讨论】:

  • 请原谅我的无知,但是我在哪里可以找到 RDS 的私有 ip,我在 RDS 仪表板中找到的最接近的是端点。
  • 好的,在我确定这绝对错误之前,请尝试 ping RDS 端点以获取私有 IP 地址。然后在你的部署中使用它。
  • 太棒了!我认为它与Kubernetes内部路由有关:kubernetes.io/docs/concepts/services-networking/dns-pod-service
  • 感谢您的帮助和链接。非常感谢
  • 如果您在不同的 VPC、不同的账户、不同的地区怎么办?
猜你喜欢
  • 2020-04-23
  • 2015-08-05
  • 2017-11-15
  • 2018-09-21
  • 2021-11-26
  • 1970-01-01
  • 1970-01-01
  • 2022-10-13
  • 2018-11-16
相关资源
最近更新 更多