9

Wie kann ich den Service des Typs NodePort dem Internet ohne unter Verwendung des Typs LoadBalancer aussetzen? Jede Ressource, die ich gefunden habe, hat es mit Load Balancer getan. Aber ich möchte nicht, dass der Lastenausgleich für meinen Anwendungsfall teuer und unnötig ist, weil ich eine Instanz von postgres Image ausführe, die auf persistente Festplatte mountet, und ich möchte von meinem PC mit pgAdmin eine Verbindung zu meiner Datenbank herstellen können. Wenn es möglich ist, könnten Sie bitte eine etwas detailliertere Antwort geben, da ich neu bei Kubernetes, GCE und Networking bin.So stellen Sie NodePort mit dem Internet auf GCE frei

Nur für den Datensatz und etwas mehr Kontext habe ich Deployment 3 Replikate meines API-Servers, den ich über Load Balancer mit set loadBalancerIP verbinden und eine andere Bereitstellung, die eine Instanz von Postgres mit NodePort-Dienst über meine API ausgeführt wird Server kommunizieren mit meiner db. Und mein Problem ist, dass es schwierig ist, die db ohne öffentlichen Zugang zu pflegen.

Antwort

11

mit NodePort als Service-Typ funktioniert sofort, z. dies wie:

apiVersion: v1 
kind: Service 
metadata: 
    name: nginx 
spec: 
    type: NodePort 
    ports: 
    - port: 80 
     nodePort: 30080 
     name: http 
    - port: 443 
     nodePort: 30443 
     name: https 
    selector: 
    name: nginx 

Weitere Details finden Sie in der documentation finden. Der Nachteil der Verwendung von NodePort ist, dass Sie sich um die Integration mit Firewalls Ihres Providers kümmern müssen. Ein Startport dafür finden Sie auch im Bereich Configuring Your Cloud Provider's Firewalls der offiziellen Dokumentation.

Für GCE Öffnung der oben für öffentlich auf allen Knoten aussehen könnte:

gcloud compute firewall-rules create myservice --allow tcp:30080,tcp:30443 

Sobald diese an Ort und Stelle ist Ihre Dienste sollten durch eine der öffentlichen IP-Adressen Ihrer Knoten zugänglich sein. Sie finden sie mit:

gcloud compute instances list 
+0

Wie kann ich herausfinden, welche IP für die Verbindungszeichenfolge verwenden? Kann ich ein vordefiniertes unter Netzwerk> Externe IP-Adressen in GCE verwenden? Oder bekomme ich einen automatisch irgendwie? – Hnus

+1

Ich kann es nicht zur Arbeit bringen. Ich mache es genau so, wie du es mir gesagt hast, aber keiner der 3 ips, die ich bekomme, wenn ich 'gcloud compute instances list' ausführe, antwortet und ich vergesse nicht, den' 30080' Port zu benutzen. Gibt es noch etwas, was ich tun muss? – Hnus

+0

Ich habe es getestet, bevor ich die Schritte beschrieben habe, stelle sicher, dass überprüft wird, ob Container und Pods ausgeführt werden und dass der Selektor im Service den Pod-Labels entspricht. – pagid

Verwandte Themen