web-dev-qa-db-ja.com

GKEからプライベートIPを使用してCloud SQL Postgresに接続する際の問題

私が従った手順:

1. VPCネットワークを作成する

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

2.このネットワークのVPCピアリングのIP範囲を作成する

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. Cloud SQL PostgresインスタンスにプライベートIPを割り当てる

Cloud SQL Webコンソールで、新しいPostgresインスタンスを作成します。 ConnectivityオプションでPrivate IPを有効にして、stg-vpcにIP範囲google-managed-services-stg-vpcを設定します。

これにより、IP 10.20.0.3のCloud SQL Postgresインスタンスが作成されます。

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のDBに接続するアプリケーションをデプロイする

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

Postgres JDBCドライバーを使用してCloud SQL DBインスタンスのプライベートIPに接続するJavaアプリケーションをデプロイします。エラーJava.net.SocketTimeoutException: connect timed outが発生します。

私は追加のステップも試しました:

  1. 次のIP範囲のPostgresポートを開くファイアウォールルールを作成しました:gcloud compute firewall-rules create psql-access --network stg-vpc --allow tcp:5432 --source-ranges 10.20.0.0/16
  2. Dockerコンテナー内からK8sホストマシンにpingできましたが、Postgresインスタンスにはpingできませんでした。

誰かが私が間違っていること、そしてなぜVPCピアリングが機能しないのかを提案できますか?.

4

@ patrick-wの提案に従って VPC-native cluster を作成することで、Cloud SQL Postgresに接続できました。

VPCサブネットワークの作成が変更され、2つのセカンダリ範囲が含まれるようになりました。

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

5