2016-10-27 4 views
3

My Kubernetes 클러스터 설정에는 AWS의 개발 환경 및 테스트 환경에서 실행중인 n 계층 웹 응용 프로그램이 있습니다. 프로덕션 환경에서주기적인 백업을 보장하기 위해 포스트그레스 RDS가 선택되었습니다. postgres RDS 인스턴스를 만드는 동안 파일럿 실행 중에 네트워킹 작업을 간단하게 유지하기 위해 db 서브넷에 kubernetes-vpc가 선택되었습니다. 또한 선택한 보안 그룹은 kubernetes-minions와 동일합니다.AWS의 Kubernetes 클러스터에서 Postgres RDS에 액세스

웹 응용 프로그램 서비스 및 배포를 만든
apiVersion: v1 
kind: Endpoints 
metadata: 
    name: pgsql-rds 
subsets: 
- addresses: 
    - ip: 52.123.44.55 
    ports: 
    - port: 5432 
    name: pgsql-rds 
    protocol: TCP 

, 그것은 RDS 인스턴스에 연결할 수 없습니다입니다 -

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

:

다음

서비스 및 엔드 포인트 YAML입니다. 로그는 다음과 같습니다.

java.sql.SQLException : 연결을 할당하는 중 오류가 발생했습니다. 원인 : 연결을 할당 할 수 없습니다 : pgsql-rds : 5432에 대한 연결이 거부되었습니다. 호스트 이름과 포트가 정확하고 포스트 마스터가 TCP/IP 연결을 수락하는지 확인하십시오.

무엇이 누락 되었습니까? 문제를 해결할 수있는 모든 포인터가 감사하겠습니다.

+0

비슷한 문제가있어 문제를 해결하려고합니다. Kubernetes 클러스터와 RDS 인스턴스가 서로 다른 두 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를 받게됩니다.

다른 VPC에서 RDS 인스턴스를 공용 인터넷에 노출시키지 않으면로드 균형 조정 기능을 사용할 수 없기 때문에이 문제가 발생합니다.

관련 문제