web-dev-qa-db-ja.com

Kubernetes:EKSポッドからRDS Postgresにアクセスできない

AWSでkubernetesをセットアップしようとしています。このために、公式のAWSチュートリアルに従って、3つのノード(t2.small)を持つEKSクラスターを作成しました。次に、Postgres(異なるVPCのRDS)と通信するアプリでポッドを実行したいと思います。

しかし、残念ながらアプリはデータベースに接続しません。

私が持っているもの:

  1. 独自のVPCを持つEKSクラスター(CIDR:192.168.0.0/16)
  2. 独自のVPCを持つRDS(Postgres)(CIDR:172.30.0.0/16)
  3. RDS VPCからEKS VPCへのピアリング接続
  4. EKSクラスターの3つのパブリックサブネットのルートテーブルが更新されます。宛先が172.30.0.0/16でターゲットがルートです。手順#3のピア接続が追加されます。
  5. RDSのルートテーブルが更新されます。宛先が192.168.0.0/16でターゲットがルートです。手順3のピア接続が追加されます。
  6. 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

ポッドからRDSにアクセスするためにEKSセットアップで見逃したものは何ですか?

更新:

Serviceで問題を解決しようとしました:

apiVersion: v1
kind: Service
metadata:
  name: postgres-service
spec:
  type: ExternalName
  externalName: rds-vpc.unique_id.us-east-1.rds.amazonaws.com

そのため、このサービスをEKSで作成し、直接のRDSホストアドレスの代わりにpostgres-serviceをDB URLとして参照しようとしました。

この修正は機能しません:(

5

私が提供した答え here は実際にあなたのケースにも当てはまるかもしれません。

セレクターなしのサービス の使用についてです。 ExternalName サービスも確認してください。

0
apisim