Ich stelle eine Web-App mit Google Kubernetes Engine bereit und möchte sie über einen Load Balancer auf einer vorhandenen statischen IP-Adresse zugänglich machen, die ich im Rahmen desselben Projekts in Google Cloud Platform kontrolliere, da der Domainname verwendet werden soll zeigt schon auf diese IP.
Die Yaml-Datei, die ich für den Pod verwendet habe, ist:
apiVersion: v1
kind: Pod
metadata:
name: my-pod
labels:
app: my-app
spec:
containers:
- name: my-container
image: gcr.io/my-project/my-app:latest
Ich kann einen Lastenausgleich einrichten, indem ich Folgendes verwende:
apiVersion: v1
kind: Service
metadata:
name: my-load-balancer
spec:
ports:
- port: 80
targetPort: 80
selector:
app: my-app
type: LoadBalancer
Dies bietet eine externe IP-Adresse, auf die die App zugreifen kann, aber ich kann sie nicht so konfigurieren, dass sie die gewünschte IP-Adresse verwendet. In der Dokumentation zu den Diensten wird eine spec.clusterIP-Einstellung erwähnt, die sich jedoch nicht auf die externe IP zu beziehen scheint. Ebenso wird nach dem Einrichten des Lastenausgleichs das Feld status.loadBalancer.ingress.ip des Dienstes auf seine externe IP-Adresse festgelegt, dies scheint jedoch keine konfigurierbare Einstellung zu sein.
Als Alternative habe ich versucht, manuell eine Weiterleitungsregel in der Google Compute Engine-Konsole zu erstellen, um den Datenverkehr von meiner statischen IP-Adresse an den von Kubernetes eingerichteten Zielpool weiterzuleiten. Wenn ich jedoch versuche, eine Verbindung herzustellen, wird die Verbindung abgelehnt.
Gibt es eine Möglichkeit, das zu tun, was ich möchte - einen Kubernetes-Pod (oder Replikationscontroller) in der Google Kubernetes-Engine unter einer ausgewählten statischen IP-Adresse verfügbar zu machen?
Gute Nachrichten. Dies wird in Kubernetes v1.1 behoben. Sie können das
service.spec.loadBalancerIP
Feld auf eine IP einstellen, von der Sie wissen, dass Sie sie besitzen.Bisherige:
Dies ist ein Merkmal, das durch die Risse fiel. Es sollte funktionieren (und hat vielleicht sogar irgendwann funktioniert), war aber nicht gut getestet und wurde dabei kaputt gemacht und dann versehentlich (vorübergehend) entworfen.
Es ist auf meiner Shortlist für Dinge, die nach 1.0 behoben werden müssen.
https://github.com/GoogleCloudPlatform/kubernetes/issues/10323
quelle