Я пытаюсь настроить 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?
ОБНОВЛЕНИЕ:
Я попытался решить проблему с помощью 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.
Это исправление не работает: (