2017-09-26 1 views
1

두 개의 컨테이너가있는 포드가 있습니다. 응용 프로그램과 데이터베이스. 깍지 용 복제본 2 개가 있습니다.하나는 ClusterIP로, 다른 하나는 NodePort로 노출하십시오.

클러스터 외부에서 액세스 할 응용 프로그램 포트를 노출하고 데이터베이스 포트를 노출하고 싶지 않습니다.

하지만 트래픽을 분산시키기 위해 DNS를 사용하여 데이터베이스 포트에 액세스하려고합니다.

두 개의 서비스를 NodePort로 생성하고 응용 프로그램 포트 및 기타 서비스를 ClusterIP로 노출하여 데이터베이스 포트를 노출 할 수 있습니다.

이전에 트래픽이 균형을 유지하면서 응용 프로그램 서버의 localhost에 연결할 수도있었습니다. 그리고 응용 프로그램 서버를 nodeport로만 노출합니다.

질문 : 데이터베이스 포트를 클러스터 IP로 노출하고 앱 포트를 하나의 서비스로만 노드 포트로 표시 할 수 있습니까?

감사합니다.

답변

0

아니요.

실제로 데이터베이스를 다른 배포/서비스로 분리하려는 경우 복제 된 설치에서 동일한 포드에 데이터베이스를 보관하는 것이 매우 드문 상황입니다.

+0

데이터베이스가 포드에서 실행되는 응용 프로그램 전용 인 이유는 무엇입니까? 나는 그것이 마이크로 서비스 접근법이라고 말할 것이다. 간단한 격리 된 응용 프로그램. – Jxadro

+0

우선, 마이크로 서비스를 복제합니다. db가 심각한 복제 매직을하지 않는 한 (또는 서비스가 상태를 공유하지 않는 한) 여러 인스턴스를 실행하자마자 문제가 발생합니다. 또한 상태 저장소 (db)와 서비스를 각각 별도로 확장 할 수있는 것이 바람직합니다. 귀하의 svc가 합리적인 일을 자주하는 경우에는 물건을 포드에 추가해야하지만 상태를 저장하는 포드는 추가하지 않아도됩니다. 또 다른 것은 데이터 지속성입니다. - 지속성이 필요하지 않는 한, 데이터를 포드보다 더 오래 유지할 수 있습니까? 더 많은 것이 있지만 char 한계가 있습니다. :) –

1

대답은 다음과 같습니다. 아니요, 할 수 없습니다.

그러나 Kubernetes 서비스 유형이 NodePort 인 경우에도 포트가 라우팅 할 클러스터 IP가 할당된다는 것을 알고 있어야합니다. 따라서 두 포트를 게시하려면 단일 포트 서비스가 이름을 통해 내부적으로 노드 포트를 통해 외부에 도달하는 데 충분할 것입니다.

+0

예, 두 포트 모두 NodePort로 노출 될 수 있습니다. 하나만 NodePort로하고 다른 하나는 내부로하고 싶습니다. 또한 Nodeport가 ClusterIP를 통해 ddbb 포트에 액세스 할 수 있다고 생각했지만 서비스 설명에 지정하지 않으면 ClusterIP 또는 NodePort로 노출되지 않습니다. – Jxadro

+0

예, 실제 답변이 "아니오"인 이유입니다. –

관련 문제