2017-12-30 5 views
0

Google Kubernetes Engine의 Kubernetes 클러스터에서 실행중인 CockroachDB 인스턴스가 있습니다. 내 로컬 컴퓨터에서 연결할 수 있도록 26257 포트를 노출하려고합니다.Kubernetes의 CockroachDB를 공개 IP

this answer에 명시된 바와 같이, 포드로의 포트 전달은 작동하지 않습니다.

나는 서비스에 내 도메인 이름 경로에서 매핑하는 데 사용되는 nginx를-진입 컨트롤러, 그래서 나는 그것을 사용하려고 : 나는 NodePort에 ClusterIP에서 내 DB-cockroachdb - 공공 서비스를 변경

:

내 진입 YAML에

-name: postgresql 

nodePort: 30472 

port: 26257 

protocol: TCP 

targetPort: 26257 

이러한 라인 :

type: NodePort 

나는 나의 nginx를 컨트롤러 YAML에이 라인을 추가

- host: db.mydomain.com 
    http: 
    paths: 
    - path:/
     backend: 
     serviceName: db-cockroachdb-public 
     servicePort: 26257 

그러나 데이터베이스에 연결할 수 없습니다. 연결이 거부됩니다. 또한 nginx 컨트롤러에서 SSL 리디렉션을 사용하지 않으려 고했지만 여전히 작동하지 않습니다.

는 또한 ConfigMap 형을 시도했지만 아무것도하지 않았다 :

https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/exposing-tcp-udp-services.md 

답변

2

이 문제를 해결할 수있는 몇 가지 방법이 있습니다. 대부분은 입력 구성을 변경하거나 서비스에 연결하는 방법과 관련이 있습니다. 또 다른 옵션은 진입 장비에 대한 필요성을 없애기 위해 항구 포워딩을하는 것입니다.

CockroachDB 구성 파일을 약간 수정하여 포트 포워딩을 만들 수 있습니다. the invocation of the Cockroach binary에있는 --host 플래그의 이름을 --advertise-host으로 변경하십시오. 이렇게하면 프로세스는 호스트 이름 외에 localhost에서 수신 대기하게되어 포트 전달 작업을 수행합니다.

편집 : CockroachDB 저장소의 기본 구성을 --host 대신 --advertise-host으로 변경 했으므로 이제 포트 전달이 기본적으로 작동합니다.

0

는 기술적으로의 nginx 인스턴스를 통해 프록시에 CockroachDB 일을해야하는지 모르겠어요,하지만 당신의 설정은 다른 이유로 실패 . rules 섹션에서 servicePort를 지정할 때 어떤 포트가 서비스에 노출되어 있는지 k8에 알려줍니다. 매핑 자체는 기본적으로 원하는 포트가 아닌 포트 80/443으로 발생합니다. 따라서 귀하의 경우에는 포트 80에 문의하십시오.