Befolgen Sie dieses Gästebuch-Tutorial.
Gegen Ende wird kurz erläutert, wie man einen Dienst erstellt LoadBalancer
oder zuweist . Sie verweisen aufNodePorts
dieses Dokumentdas die verschiedenen Typen und ihre Funktion beschreibt, aber nicht wirklich im Detail darauf eingeht, wie man sie auf einen Dienst anwendet. Gibt es eine Möglichkeit, den laufenden Dienst zu aktualisieren, indem man einen Load Balancer erstellt und an die angegebenen Ports anfügt?
Wir verwenden Amazon Web Services zum Hosten unseres Clusters. Es unterstützt den Load Balancer hervorragend beim Erstellen eines Dienstes, aber ich bin nicht sicher, wie ich den Dienst ändern kann.
BEARBEITEN:
Bei diesem Versuch ist ein Fehler aufgetreten:
$ kubectl expose service frontend --port=80 --type=LoadBalancer
Fehler vom Server: Dienst „frontend“ existiert bereits
Antwort1
Es ist ziemlich verwirrend, aber anscheinend kubectl expose
kann nur ein neuer Dienst erstellt, aber kein vorhandener aktualisiert werden. Es heißt, dass Sie beim Ausführen auf einem vorhandenen Dienst ein --name
Flag übergeben sollten, um den gewünschten Namen des neuen Dienstes anzugeben und so den Konflikt zu vermeiden, den Sie gesehen haben.
kubectl patch
Um einen Dienst direkt zu aktualisieren, sollten Sie entweder oder verwenden können kubectl update
. Das ist wahrscheinlich nicht die optimale Vorgehensweise, aber ich persönlich neige dazu, so etwas zu tun, indem ich ausführe , svc.yaml nach Wunsch aktualisiere ( in diesem Fall kubectl get svc svc-name -o yaml > svc.yaml
zu haben ) und dann .type: LoadBalancer
kubectl update -f svc.yaml
Antwort2
Ich bin nicht sicher, ob dies für Ihren Fall geeignet ist, aber ein radikalerer und einfacherer Ansatz wäre, den Dienst (aber nicht die Bereitstellung) zu löschen:
kubectl delete service 'service-name'
und stellen Sie die Bereitstellung erneut als LoadBalancer bereit:
kubectl expose deployment/'deployment-name' --type="LoadBalancer"
Antwort3
Sie können es auf folgende Weise tun:
- interaktiv
kubectl edit <SERVICE_NAME>
und ändern Sie den Typ im Editor in „LoadBalancer“ - in einem Befehl durch
kubectl patch <SERVICE_NAME> -p '{"spec":{"type":"LoadBalancer"}}'