Кубернетес: у EKS pod нет доступа к RDS Postgres
Я пытаюсь настроить kubernetes на AWS. Для этого я создал кластер EKS с 3 узлами (t2.small) в соответствии с официальным руководством AWS. Затем я хочу запустить модуль с каким-либо приложением, которое связывается с Postgres (RDS в другом VPC).
Но, к сожалению, приложение не подключается к базе данных.
Что я имею:
- Кластер EKS с собственным VPC (CIDR: 192.168.0.0/16)
- RDS (Postgres) с собственным VPC (CIDR: 172.30.0.0/16)
- Пиринговое соединение, инициированное из RDS VPC к EKS VPC
- Обновлена таблица маршрутов для 3 общедоступных подсетей кластера EKS: добавлен маршрут с пунктом назначения 172.30.0.0/16 и целевым одноранговым соединением с шага № 3.
- Обновлена таблица маршрутов для RDS: добавлен маршрут с пунктом назначения 192.168.0.0/16 и целевым одноранговым соединением с шага № 3.
- Группа безопасности 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?
1 ответ
Вы пытались включить "распространение DNS" в пиринговом соединении? Похоже, вы не получаете внутренне маршрутизируемый DNS. Вы можете включить его, зайдя в настройку для пирингового соединения и установив флажок для распространения DNS. Я обычно делаю так, будут все пиринговые соединения, которые я контролирую.
Ответ, который я привел здесь, может также относиться и к вашему делу.
Речь идет об использовании Сервисов без селекторов. Смотрите также в Службы ExternalName.