Floating IP zwischen Services übertragen
2 Minuten Lesezeit
Dieses Tutorial zeigt, wie eine bestehende Floating IP von einem Kubernetes LoadBalancer Service auf einen anderen übertragen wird — ohne dass die IP freigegeben und neu zugewiesen werden muss.
Anwendungsfall: Neue Version eines Services soll unter derselben IP erreichbar sein, z.B. bei einem Blue/Green-Deployment oder einem Service-Rename.
Voraussetzungen
- Ein bestehender LoadBalancer Service mit zugewiesener Floating IP
kubectl-Zugriff auf den Cluster
Schritt 1 — Aktuelle Floating IP ermitteln
kubectl get svc <alter-service-name>
Die Floating IP steht in der Spalte EXTERNAL-IP. Alternativ:
kubectl get svc <alter-service-name> -o jsonpath='{.metadata.annotations.loadbalancer\.openstack\.org/load-balancer-address}'
Notiere die IP für die folgenden Schritte.
Schritt 2 — Floating IP am alten Service reservieren
Falls die Annotation keep-floatingip noch nicht gesetzt ist, jetzt hinzufügen:
kubectl annotate svc <alter-service-name> \
loadbalancer.openstack.org/keep-floatingip="true"
Schritt 3 — Alten Service löschen
kubectl delete svc <alter-service-name>
Der LoadBalancer in OpenStack wird entfernt, die Floating IP bleibt jedoch reserviert.
Schritt 4 — Neuen Service mit der Floating IP erstellen
Im Manifest des neuen Services die Floating IP über spec.loadBalancerIP und die Annotations referenzieren:
apiVersion: v1
kind: Service
metadata:
name: <neuer-service-name>
annotations:
loadbalancer.openstack.org/keep-floatingip: "true"
loadbalancer.openstack.org/load-balancer-address: <FloatingIP>
spec:
type: LoadBalancer
loadBalancerIP: <FloatingIP>
selector:
app: <neues-app-label>
ports:
- port: 80
targetPort: 8080
kubectl apply -f <neuer-service>.yaml
Schritt 5 — Zuweisung prüfen
kubectl get svc <neuer-service-name>
Nach 1–2 Minuten erscheint die Floating IP in der Spalte EXTERNAL-IP. Der CCM kann einen kurzen Moment benötigen, bis der neue LoadBalancer provisioniert und die IP zugewiesen ist.
Hinweise
- Zwischen dem Löschen des alten und dem Erstellen des neuen Services entsteht eine kurze Downtime.
keep-floatingip: "true"sollte im neuen Service gesetzt bleiben, damit die IP auch bei zukünftigen Löschvorgängen erhalten bleibt.- Falls die IP nach dem Löschen des alten Services nicht mehr bekannt ist, bitte ein Support-Ticket im Kundenportal eröffnen.