2017-09-26 2 views
1

Ich habe einen Pod mit zwei Containern. Eine Anwendung und eine Datenbank. Ich habe zwei Repliken für die Kapsel.Expose zwei Ports, einer als ClusterIP und andere als NodePort

Ich möchte den Anwendungsport offenlegen, auf den außerhalb des Clusters zugegriffen wird, und ich möchte den Datenbankport nicht verfügbar machen.

Aber ich möchte auf den Datenbank-Port mit DNS zugreifen, um den Verkehr auszugleichen.

Ich kann zwei Dienste als NodePort erstellen und den Anwendungsanschluss und anderen Dienst als ClusterIP verfügbar machen, um den Datenbankport freizugeben.

Ich könnte auch eine Verbindung zu Localhost vom Anwendungsserver herstellen, da der Verkehr zuvor ausgeglichen wurde. Legen Sie den App-Server nur als Knotenport offen.

Die Frage ist: Konnte ich den Datenbankport als Cluster-IP und den App-Port als nodeport mit nur einem Dienst verfügbar machen?

Vielen Dank.

Antwort

0

Nein. Sie können nicht.

Ganz zu schweigen von der Tatsache, dass es eine sehr seltene Situation ist, in der es sinnvoll ist, die Datenbank in einem replizierten Setup im selben Pod zu halten, da sie normalerweise in verschiedene Bereitstellungen/Dienste aufgeteilt werden soll.

+0

Wenn die Datenbank nur für die Anwendung im Pod läuft, warum ist sie selten? Ich würde sagen, das ist der Microservice-Ansatz. Einfache isolierte Anwendungen. – Jxadro

+0

Zunächst replizieren Sie Microservices. Wenn Ihre db keine ernsthafte Replikationszauberei ausführt (oder Ihre Dienste keinen Status teilen), treten Probleme auf, sobald Sie mehrere Instanzen ausführen. Es ist auch vorzuziehen, den Statusspeicher (db) skalieren zu können und jeden separat zu warten. Wenn Ihr SVC etwas Sinnvolles tut, könnte es sein, dass Sie Pods hinzufügen müssen, die zwar * stopfen *, aber nicht diejenigen, die den Status speichern. Eine andere Sache ist die Datenpersistenz - wie bewahren Sie Daten über Pods auf, die zerstört werden (es sei denn, Sie brauchen keine Persistenz). Es gibt mehr dazu, aber Char Limit tritt in ... :) –

1

Die Antwort lautet: Nein, das geht nicht.

Aber Sie sollten immer noch wissen, dass ein Kubernetes Service vom Typ NodePort auch eine Cluster IP zuweisen wird, an die der Port routen wird. Wenn Sie also beide Ports veröffentlichen möchten, reicht ein einziger Service aus, um sie intern über den Namen und extern über Knotenports zu erreichen.

+0

Ja, das Problem ist, dass beide Ports als NodePort offen gelegt werden. Ich will nur einen als NodePort und den anderen nur intern. Ich dachte auch, dass, wie Nodeport über ein ClusterIP ist, ich auf den ddbb-Port zugreifen konnte, aber wenn ich es in der Dienstbeschreibung nicht angeben, wird es weder als ClusterIP noch als NodePort offen gelegt. – Jxadro

+0

Ja, deshalb lautet die Antwort "Nein". –

Verwandte Themen