Eine Kubernetes LoadBalancer wird sofort zurückgegeben (zB kubectl create -f ...
oder kubectl expose svc NAME --name=load-balancer --port=80 --type=LoadBalancer
).Warten, bis Kubernetes einem LoadBalancer-Dienst eine externe IP-Adresse zugewiesen hat?
Ich weiß, eine manuelle Art und Weise in der Schale warten:
external_ip=""
while [ -z $external_ip ]; do
sleep 10
external_ip=$(kubectl get svc load-balancer --template="{{range .status.loadBalancer.ingress}}{{.ip}}{{end}}")
done
Dies ist jedoch nicht ideal ist:
- Benötigt mindestens 5 Zeilen Bash-Skript.
- Unendliche Wartezeit auch im Fehlerfall (ansonsten ist eine Zeitüberschreitung erforderlich, die die Anzahl der Zeilen erhöht).
- Wahrscheinlich nicht effizient; könnte
--wait
oder--wait-once
verwenden, aber mit diesen Befehl wird nie zurückgegeben.
Gibt es eine bessere Art und Weise, bis ein Service externe IP zu warten (aka LoadBalancer Ingress IP) gesetzt ist oder nicht gesetzt?
Konnte es wie eine Wartezeit für X Sekunden dauern, bis bereit oder scheitern? – Wernight
Was bedeutet "fehlgeschlagen"? Dass das Gesamtsystem aufhören wird zu versuchen? Warum? Sollte es dann den Service als ausgefallen markieren? Mir ist nicht klar, was Sie erreichen wollen - ist es nicht bekannt, ob die Umgebung tatsächlich LB unterstützt? Oder dass Sie einen Ausfall eines Cloud-Anbieters erwarten? Egal - Sie haben einen Weg, es schon zu tun, Sie mögen einfach nicht loopen :) –
fail bedeutet Ausgang 1, wenn keine externe IP innerhalb von X Sekunden zugewiesen wurde. Ja, ich möchte kein Skript zur Bereitstellung erstellen. Die Bereitstellung sollte so einfach wie möglich sein, um Fehler in meinem Skript zu vermeiden, die ernsthaften Schaden anrichten, da ein Skript pro Projekt sehr viel häufiger Fehler aufweist als ein gewöhnliches Skript/Feature für alle Kuberentes-Projekte. – Wernight