Kubernetes - Kann ich die Verwendung des GCE Load Balancer vermeiden, um die Kosten zu senken?

10

Ich stelle einen Kubernetes-Cluster auf GCE mit Gitlab-CI bereit. Ich möchte die Kosten auf ein Minimum beschränken - hier ist mein aktuelles Setup:

  • Knoten werden auf 3 f1-microInstanzen ausgeführt
  • Ein System-Pod, der Traefikmit ServiceType konfiguriert ausgeführt wirdLoadBalancer
  • Platzhalter DNS konfiguriert
  • 1 postgres Hülse
  • 1 Webserver-Pod mit ingressfür Traefik konfiguriert

Ich möchte die Kosten für meine Bereitstellung senken. Der größte Teil der Kosten entfällt auf den GCE Load Balancer. Gibt es eine Möglichkeit, eine öffentliche IP-Adresse anstelle eines Load Balancers in GCE zu verwenden? Wenn ja, kann ich die dem Cluster zugewiesene IP-Adresse verwenden (anstatt eine statische IP zu reservieren)?

Anders ausgedrückt: Gibt es eine Möglichkeit, eine kurzlebige IP-Adresse mithilfe von GCE ohne Load Balancer an einen Kubernetes-Dienst zu binden?

Gibt es eine andere Konfiguration, die ich anders durchführen kann, um die Kosten für GCE im Allgemeinen zu senken?

Mitkins
quelle
1
Sie können Ihren Dienst nur mithilfe des NodePort-Diensttyps verfügbar machen. Dies führt jedoch zu Einschränkungen bei Ihrer Bereitstellung. Weitere Informationen finden Sie unter diesem Link .
Kamran

Antworten:

10

Ja, über externe IPs. Beachten Sie, dass dies bedeutet, dass Ihr Dienst ausfällt, wenn der Knoten, dem die externe IP zugewiesen wurde, ausfällt. Wenn Sie jedoch nur einen Master ausführen, ist Ihnen das wahrscheinlich egal.

Beispielservice:

apiVersion: v1
kind: Service
metadata:
  name: myapp
spec:
  ports:
    - port: 80
      protocol: TCP
  selector:
    app: myapp
  externalIPs:
    - a.b.c.d

Die IP muss die interne IP der GCE-Instanz sein (dies liegt daran, dass GCE den Datenverkehr zu den internen IPs DNATs). Der Dienst sollte dann über die dem Knoten zugewiesene externe IP zugänglich sein.

Möglicherweise möchten Sie den Dienst für Ihren Ingress-Controller ändern, damit Sie alle Ihre Apps über eine IP-Adresse weiterleiten können.

ConnorJC
quelle
2
Nachdem ich etwas über die DNAT-Sache gelernt hatte, wurde mir klar, dass ich eine Firewall-Regel konfigurieren musste, um Datenverkehr auf bestimmten Ports zur GCE-Instanz zuzulassen. Danach konnte ich Ihren Vorschlag erfolgreich umsetzen. Ich habe auch erfolgreich eine NodePortVersion getestet
Mitkins
2

Ich bevorzuge es, die Cloud-Load-Balancer erst zu verwenden, wenn dies erforderlich ist, da die Kosten und die Lieferantenbindung bestehen.

Stattdessen verwende ich Folgendes: https://kubernetes.github.io/ingress-nginx/deploy/

Es ist ein Pod, der einen Load Balancer für Sie ausführt. Diese Seite enthält GKE-spezifische Installationshinweise.

Michael Cole
quelle