Кубернетес: у EKS pod нет доступа к RDS Postgres - PullRequest
0 голосов
/ 01 декабря 2018

Я пытаюсь настроить kubernetes на AWS.Для этого я создал кластер EKS с 3 узлами (t2.small) в соответствии с официальным руководством AWS.Затем я хочу запустить модуль с каким-либо приложением, которое связывается с Postgres (RDS в другом VPC).

Но, к сожалению, приложение не подключается к базе данных.

Что у меня есть:

  1. EKS кластер с собственным VPC (CIDR: 192.168.0.0/16)
  2. RDS (Postgres) со своим собственным VPC (CIDR: 172.30.0.0/16)
  3. Одноранговое соединение, инициированное из RDS VPC с EKS VPC
  4. Таблица маршрутовдля 3 общедоступных подсетей кластера EKS обновлен: добавлен маршрут с пунктом назначения 172.30.0.0/16 и целевым одноранговым соединением с шага № 3.
  5. Обновлена ​​таблица маршрутов для RDS: маршрут с пунктом назначения 192.168.0.0 / 16 и целевое одноранговое соединение с шага # 3 добавлено.
  6. Группа безопасности RDS обновлена, добавлено новое правило входящего трафика: весь трафик с 192.168.0.0/16 разрешен

После всех этих шагов я выполняю команду kubectl:

kubectl exec -it my-pod-app-6vkgm nslookup rds-vpc.unique_id.us-east-1.rds.amazonaws.com
nslookup: can't resolve '(null)': Name does not resolve

Name:      rds-vpc.unique_id.us-east-1.rds.amazonaws.com
Address 1: 52.0.109.113 ec2-52-0-109-113.compute-1.amazonaws.com

Затем я подключаюсь к одному из 3 узлов и выполняю команду:

getent hosts rds-vpc.unique_id.us-east-1.rds.amazonaws.com
52.0.109.113    ec2-52-0-109-113.compute-1.amazonaws.com rds-vpc.unique_id.us-east-1.rds.amazonaws.com

Что я пропустил в EKSнастройка для того, чтобы иметь доступ из модулей в RDS?

ОБНОВЛЕНИЕ:

Я попытался решить проблему с помощью Service:

apiVersion: v1
kind: Service
metadata:
  name: postgres-service
spec:
  type: ExternalName
  externalName: rds-vpc.unique_id.us-east-1.rds.amazonaws.com

Поэтому я создал этот сервис в EKS, а затем попытался сослаться на postgres-service как на URL БД вместо прямогоАдрес хоста RDS.

Это исправление не работает: (

Ответы [ 2 ]

0 голосов
/ 05 декабря 2018

Вы пытались включить "распространение DNS" в пиринговом соединении?Похоже, вы не получаете внутренне маршрутизируемый DNS.Вы можете включить его, зайдя в настройку для пирингового соединения и установив флажок для распространения DNS.Я обычно делаю это для всех пиринговых соединений, которые я контролирую.

0 голосов
/ 01 декабря 2018

Ответ, который я предоставил здесь , может действительно относиться и к вашему делу.

Речь идет об использовании Сервисов без селекторов .Смотрите также ExternalName Services.

...