Назад | Перейти на главную страницу

Проблема с подключением к Cloud SQL Postgres с использованием частного IP-адреса от GKE

Шаги, которые я сделал:

1. Создайте сеть VPC.

gcloud compute networks create stg-vpc \ --subnet-mode custom

2. Создайте диапазон IP-адресов для пиринга VPC для этой сети.

gcloud beta compute addresses create google-managed-services-stg-vpc \ --global \ --purpose=VPC_PEERING \ --description="peering range for psql" \ --addresses=10.20.0.0 \ --prefix-length=16 \ --network=stg-vpc

3. Назначьте частный IP-адрес экземпляру Cloud SQL Postgres.

В веб-консоли Cloud SQL я создаю новый экземпляр Postgres. В Связь опции, которые я включаю Частный IPи настройте его на stg-vpc с диапазоном IP google-managed-services-stg-vpc.

Это создает экземпляр Cloud SQL Postgres с IP 10.20.0.3.

4. Создайте подсеть для кластера GKE.

gcloud compute networks subnets create stg-vpc-us-central1 \ --network stg-vpc \ --region us-central1 \ --range 10.10.0.0/16

5. Создайте кластер GKE и разверните приложение, которое подключается к БД в Cloud SQL.

gcloud -q container clusters create cluster-1 \ --zone us-central1-a \ --num-nodes 3 \ --network stg-vpc \ --subnetwork stg-vpc-us-central1

Я развертываю приложение Java, которое подключается к частному IP-адресу экземпляра Cloud SQL DB с помощью драйвера Postgres JDBC. Я получаю ошибку java.net.SocketTimeoutException: connect timed out.

Я также попробовал дополнительные шаги:

  1. Я создал правило брандмауэра, чтобы открыть порт Postgres для диапазона IP-адресов: gcloud compute firewall-rules create psql-access --network stg-vpc --allow tcp:5432 --source-ranges 10.20.0.0/16.
  2. Мне удалось выполнить эхо-запрос из контейнера докеров на хост-машины K8s, но не на экземпляр Postgres.

Может ли кто-нибудь подсказать, что я делаю неправильно и почему не работает пиринг VPC.

Мне удалось подключиться к Cloud SQL Postgres, создав Собственный кластер VPC как предлагает @ patrick-w.

Создание моей подсети VPC было изменено и теперь включает два дополнительных диапазона:

gcloud compute networks subnets create stg-vpc-us-central1 \ --network stg-vpc \ --region us-central1 \ --range 10.10.0.0/16 \ --secondary-range stg-vpc-us-central1-pods=10.11.0.0/16,stg-vpc-us-central1-services=10.12.0.0/16

И моя команда создания кластера была изменена, чтобы включить ip-alias, и добавлены сведения об использовании дополнительных диапазонов.

gcloud -q container clusters create cluster-1 \ --zone us-central1-a \ --num-nodes 3 \ --enable-ip-alias \ --network stg-vpc \ --subnetwork stg-vpc-us-central1 \ --cluster-secondary-range-name stg-vpc-us-central1-pods \ --services-secondary-range-name stg-vpc-us-central1-services