Utworzenie zwraca natychmiast (np. kubectl create -f ...
lub kubectl expose svc NAME --name=load-balancer --port=80 --type=LoadBalancer
).Jak poczekać, aż Kubernetes przydzieli zewnętrzny adres IP do usługi LoadBalancer?
wiem ręczny sposób, aby czekać w skorupkach:
external_ip=""
while [ -z $external_ip ]; do
sleep 10
external_ip=$(kubectl get svc load-balancer --template="{{range .status.loadBalancer.ingress}}{{.ip}}{{end}}")
done
To jednak nie jest idealny:
- Wymaga co najmniej 5 linii atakujących skryptów.
- Nieskończone oczekiwanie nawet w przypadku błędu (w innym przypadku wymagany jest limit czasu, który zwiększa liczbę wierszy).
- Prawdopodobnie nie jest wydajna; może użyć
--wait
lub--wait-once
, ale używając tych poleceń, polecenie nigdy nie wróci.
Czy istnieje lepszy sposób, aby poczekać, aż usługa zewnętrzne IP (aka LoadBalancer Stopień IP) jest ustawiony lub nie udało się ustawić?
Czy możliwe jest odczekanie X sekund do czasu, aż będzie gotowe lub nie? – Wernight
Co oznacza "błąd"? Że cały system przestanie próbować? Czemu? Czy powinien następnie oznaczyć usługę jako nieudaną? Nie jestem pewien, co próbujesz osiągnąć - czy nie wiesz, czy środowisko faktycznie obsługuje LB? A może spodziewasz się, że dostawca usług w chmurze zawodzi? Niezależnie - masz sposób to zrobić już, po prostu nie lubisz zapętlać :) –
fail oznacza wyjście 1, jeśli w ciągu X sekund nie został przypisany zewnętrzny adres IP. Tak, nie lubię tworzyć skryptów do wdrożenia. Wdrożenie powinno być tak proste, jak to tylko możliwe, aby uniknąć błędów w moim skrypcie, które spowodowałyby poważne szkody, ponieważ jeden skrypt na projekt jest o wiele bardziej prawdopodobny, że zawiera błędy niż typowy skrypt/funkcja dla wszystkich projektów Kuberentes. – Wernight