2015-08-12 6 views
4

У меня есть кластер Kubernetes, работающий в Amazon EC2 внутри его собственного VPC, и я пытаюсь подключить докционированные службы к базе данных RDS (которая находится в другом VPC). Я понял, равноправные и таблицы маршрутизации записей, так что я могу это сделать из миньонов машин:Подключение контейнера Kubernetes к экземпляру RDS в отдельном VPC

[email protected]:~$ psql -h <rds-instance-name> 
Password: 

Так что все работает. Проблема заключается в том, что, когда я пытаюсь сделать эту связь с внутри Kubernetes управляемого контейнера, я получаю тайм-аут:

[email protected]:~$ psql -h <rds-instance-name> 
… 

Чтобы получить миньон для подключения, я настроил соединение пиринга, настроить таблицы маршрутизации из VPC Kubernetes, так что 10.0.0.0/16 (CIDR для RDS VPC) сопоставляется с пиринговым соединением и обновляет группу безопасности экземпляра RDS, чтобы разрешить трафик на порт 5432 из диапазона адресов 172.20.0.0/16 (CIDR для VPC Kubernetes).

ответ

4

С помощью Kelsey Хайтауэр, я решил проблему. Оказывается, это была проблема маршрутизации Docker. Я написал вверх детали в blog post, но в нижней строке, чтобы изменить таблицу маршрутизации приспешников как так:

$ sudo iptables -t nat -I POSTROUTING -d <RDS-IP-ADDRESS>/32 -o eth0 -j MASQUERADE 
1

Вы также изменили исходные/целевые чеки?

Поскольку ваш экземпляр будет отправлять и получать трафик для IP-адресов, отличных от тех, которые назначены вашей подсетью, вам необходимо отключить проверки источника/адресата.

Смотреть изображение: https://coreos.com/assets/images/media/aws-src-dst-check.png

+0

Source/Dest. проверка «ложна» для моих миньонов. :П –