2016-10-27 16 views
3

My Kubernetesクラスタセットアップでは、AWSの開発環境とテスト環境で動作するn層Webアプリケーションがあります。プロダクション環境では、定期的なバックアップを確保するために、postgres RDSを選択しました。 Postgres RDSインスタンスを作成する際に、db-subnet用にkubernetes-vpcが選択され、パイロットの実行中にネットワークの内容が簡単に保持されました。 また、選択されたセキュリティグループはkubernetes-minionsと同じです。続きAWSのKubernetesクラスタからPostgres RDSにアクセス

サービスとエンドポイントYAMLです:

apiVersion: v1 
kind: Service 
metadata: 
    labels: 
    name: pgsql-rds 
    name: pgsql-rds 
spec: 
    ports: 
    - port: 5432 
     protocol: TCP 
     targetPort: 5432 

- ウェブアプリのサービスと展開が作成されると

apiVersion: v1 
kind: Endpoints 
metadata: 
    name: pgsql-rds 
subsets: 
- addresses: 
    - ip: 52.123.44.55 
    ports: 
    - port: 5432 
    name: pgsql-rds 
    protocol: TCP 

、それはRDSインスタンスに接続することができませんでしだ。 ログは次のとおりです。

java.sql.SQLException:接続の割り当て中にエラーが発生しました。原因:次の理由で接続を割り当てることができませんでした:pgsql-rdsへの接続:5432が拒否されました。ホスト名とポートが正しく、ポストマスターがTCP/IP接続を受け入れていることを確認します。

私は何をしないのですか?問題を解決するためのあらゆるポインタが高く評価されます。

+0

私も同様の問題があり、問題を解決しようとしています。 KubernetesクラスタとRDSインスタンスは2つの異なるVPCの背後にありますか?おそらく、[VPCピアリング](http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-peering.html)を使用する必要があります。それは完全な解決策ではないようです - [この投稿](http://ben.straub.cc/2015/08/19/kubernetes-aws-vpc-peering/)をチェックしてください。 – ramhiser

+0

'pgsql-rds'に接続しようとしてはいけませんか? – kichik

+0

@ JohnA.Ramey、それはポストで述べたk8sクラスタとrdsインスタンス(kubernetes-vpc)と同じvpcです。 – sap

答えて

2

これはDNS解決と関係があります。同じVPC内のRDS DNS名を使用すると、プライベートIPに解決されます。インターネットや別のVPCで同じDNS名を使用すると、RDSインスタンスのパブリックIPが取得されます。

これは、RDSインスタンスを公開インターネットに公開しない限り、別のVPCからロードバランシング機能を使用できないため、問題です。

関連する問題