
Before you begin
- Labs create a Google Cloud project and resources for a fixed time
- Labs have a time limit and no pause feature. If you end the lab, you'll have to restart from the beginning.
- On the top left of your screen, click Start lab to begin
Create a Kubernetes cluster and launch Nginx container
/ 25
Create Monolith pods and service
/ 25
Allow traffic to the monolith service on the exposed nodeport
/ 5
Adding Labels to Pods
/ 20
Creating Deployments (Auth, Hello and Frontend)
/ 25
Kubernetes ist ein auf kubernetes.io verfügbares Open-Source-Projekt, das in vielen verschiedenen Umgebungen ausgeführt werden kann: von Laptops bis hin zu hochverfügbaren Clustern mit mehreren Knoten, von öffentlichen Clouds bis hin zu lokalen Bereitstellungen, von virtuellen bis hin zu Bare-Metal-Maschinen.
Eine verwaltete Umgebung wie Kubernetes Engine bietet Ihnen in diesem Lab die Möglichkeit, sich vollständig auf Kubernetes zu konzentrieren, da Sie keine Zeit für die Einrichtung der zugrunde liegenden Infrastruktur aufwenden müssen. Die Kubernetes Engine ist eine verwaltete Umgebung zum Bereitstellen von Containeranwendungen. Sie vereint die neuesten Innovationen im Hinblick auf die Entwicklungsproduktivität, den effizienten Einsatz von Ressourcen, automatisierte Abläufe und Open-Source-Flexibilität, um die Produkteinführungszeit zu verkürzen.
Aufgaben in diesem Lab:
kubectl
bereitstellen und verwaltenLesen Sie diese Anleitung. Labs sind zeitlich begrenzt und können nicht pausiert werden. Der Timer beginnt zu laufen, wenn Sie auf Lab starten klicken, und zeigt Ihnen, wie lange die Ressourcen für das Lab verfügbar sind.
In diesem praxisorientierten Lab können Sie die Lab-Aktivitäten in einer echten Cloud-Umgebung selbst durchführen – nicht in einer Simulations- oder Demo-Umgebung. Dazu erhalten Sie neue, temporäre Anmeldedaten, mit denen Sie für die Dauer des Labs auf Google Cloud zugreifen können.
Für dieses Lab benötigen Sie Folgendes:
Klicken Sie auf Lab starten. Wenn Sie für das Lab bezahlen müssen, wird ein Pop-up-Fenster geöffnet, in dem Sie Ihre Zahlungsmethode auswählen können. Auf der linken Seite befindet sich der Bereich Details zum Lab mit diesen Informationen:
Klicken Sie auf Google Cloud Console öffnen (oder klicken Sie mit der rechten Maustaste und wählen Sie Link in Inkognitofenster öffnen aus, wenn Sie Chrome verwenden).
Im Lab werden Ressourcen aktiviert. Anschließend wird ein weiterer Tab mit der Seite Anmelden geöffnet.
Tipp: Ordnen Sie die Tabs nebeneinander in separaten Fenstern an.
Kopieren Sie bei Bedarf den folgenden Nutzernamen und fügen Sie ihn in das Dialogfeld Anmelden ein.
Sie finden den Nutzernamen auch im Bereich Details zum Lab.
Klicken Sie auf Weiter.
Kopieren Sie das folgende Passwort und fügen Sie es in das Dialogfeld Willkommen ein.
Sie finden das Passwort auch im Bereich Details zum Lab.
Klicken Sie auf Weiter.
Klicken Sie sich durch die nachfolgenden Seiten:
Nach wenigen Augenblicken wird die Google Cloud Console in diesem Tab geöffnet.
Cloud Shell ist eine virtuelle Maschine, auf der Entwicklertools installiert sind. Sie bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und läuft auf Google Cloud. Mit Cloud Shell erhalten Sie Befehlszeilenzugriff auf Ihre Google Cloud-Ressourcen.
Wenn Sie verbunden sind, sind Sie bereits authentifiziert und das Projekt ist auf Ihre Project_ID,
gcloud
ist das Befehlszeilentool für Google Cloud. Das Tool ist in Cloud Shell vorinstalliert und unterstützt die Tab-Vervollständigung.
Ausgabe:
Ausgabe:
gcloud
finden Sie in Google Cloud in der Übersicht zur gcloud CLI.
gcloud container clusters get-credentials io
erneut authentifizieren.
Das Beispiel hat das folgende Layout:
Mit diesem Code können Sie Kubernetes endlich ausprobieren!
Der Befehl kubectl create
ist die einfachste Möglichkeit, Kubernetes zu starten.
Kubernetes hat ein Deployment erstellt. Deployments werden im weiteren Verlauf des Labs ausführlicher erläutert. An dieser Stelle müssen Sie lediglich wissen, dass Deployments die unterbrechungsfreie Ausführung von Pods gewährleisten, selbst wenn die Knoten ausfallen, auf denen sie ausgeführt werden.
In Kubernetes werden alle Container in einem Pod ausgeführt.
kubectl get pods
können Sie den ausgeführten Nginx-Container abrufen:kubectl expose
verfügbar machen:Was ist gerade geschehen? Kubernetes hat im Hintergrund einen externen Load Balancer erstellt, dem eine öffentliche IP-Adresse zugeordnet ist. Alle Clients, die diese öffentliche IP-Adresse ansteuern, werden an die Pods weitergeleitet, die hinter dem Dienst liegen. In diesem Fall wäre das der Pod „nginx“.
kubectl get services
auf:ExternalIP
für Ihren Dienst ausgefüllt ist. Das ist normal. Führen Sie den Befehl kubectl get services
einfach in Abständen von wenigen Sekunden so lange noch einmal aus, bis das Feld ausgefüllt ist.
Das war schon alles. Kubernetes unterstützt einen einfachen, vorkonfigurierten Workflow mit den kubectl
-Befehlen „run“ und „expose“.
Klicken Sie unten auf Fortschritt prüfen. Wenn Sie erfolgreich einen Kubernetes-Cluster erstellt und einen Nginx-Container bereitgestellt haben, wird ein Testergebnis angezeigt.
Nach dieser kurzen Einführung in Kubernetes werden die Komponenten und Abstraktionen nun im Einzelnen vorgestellt.
Das Kernstück von Kubernetes ist der Pod.
Pods repräsentieren eine Zusammenstellung von einem oder mehreren Containern. Im Allgemeinen werden Container mit starken gegenseitigen Abhängigkeiten in einem Pod gruppiert.
In unserem Beispiel gibt es einen Pod, der die Container „monolith“ und „nginx“ enthält.
Pods haben auch Volumes. Volumes sind Datenträger, die dieselbe Lebensdauer haben wie der jeweilige Pod. Sie können von den Containern im Pod verwendet werden. Für die Inhalte im Pod wird ein gemeinsamer Namespace zur Verfügung gestellt, sodass die beiden Container in unserem Beispiel-Pod miteinander kommunizieren können. Sie nutzen auch die zugeordneten Volumes gemeinsam.
Pods teilen darüber hinaus einen Netzwerk-Namespace. Für jeden Pod gibt es also eine IP-Adresse.
In der nächsten Aufgabe werden Pods genauer behandelt.
Pods können mithilfe von Pod-Konfigurationsdateien erstellt werden. Nehmen Sie sich kurz Zeit, sich die Konfigurationsdatei des Pods „monolith“ genauer anzusehen.
Die Ausgabe zeigt die geöffnete Konfigurationsdatei:
Folgende Punkte sind besonders zu beachten:
kubectl
:kubectl get pods
alle Pods auf, die im Standard-Namespace ausgeführt werden:kubectl describe
weitere Informationen zu diesem Pod abrufen:Es werden zahlreiche Informationen zum Pod angezeigt, unter anderem seine IP-Adresse und das Ereignisprotokoll. Diese Informationen sind für eine eventuelle Fehlerbehebung nützlich.
In Kubernetes können Pods ganz einfach erstellt werden, indem sie in den Konfigurationsdateien beschrieben werden. Genauso einfach ist es, Informationen zu den ausgeführten Pods aufzurufen. Jetzt können Sie alle Pods erstellen, die in Ihrem Deployment benötigt werden.
Den Pods ist standardmäßig eine private IP-Adresse zugeordnet, sodass es nicht möglich ist, von außerhalb des Clusters auf sie zuzugreifen. Mit dem Befehl kubectl port-forward
können Sie einem Port innerhalb des Pods „monolith“ einen lokalen Port zuordnen.
Öffnen Sie ein zweites Cloud Shell-Terminal. Jetzt haben Sie zwei Terminals: eines zum Ausführen des Befehls kubectl port-forward
und das andere zum Ausgeben von curl
-Befehlen.
Führen Sie im zweiten Terminal den folgenden Befehl aus, um die Portweiterleitung einzurichten:
curl
die Kommunikation mit Ihrem Pod:Sehr gut. Sie haben ein freundliches „hello“ von Ihrem Container erhalten.
curl
was geschieht, wenn Sie einen sicheren Endpunkt ansteuern:Huch!
password
ein, wenn die Anmeldeaufforderung angezeigt wird.Nach der Anmeldung wurde ein JWT-Token ausgegeben.
Geben Sie das Passwort password
noch einmal ein, wenn Sie nach dem Hostpasswort gefragt werden.
Mit dem folgenden Befehl wird das Token kopiert und in den Befehl curl
aufgenommen, um den sicheren Endpunkt anzusteuern:
An dieser Stelle sollten Sie eine Antwort von der Anwendung erhalten, die uns wissen lässt, dass alles wieder in Ordnung ist.
kubectl logs
können Sie sich die Logs für den Pod monolith
anzeigen lassen.-f
die Logs in einem Echtzeitstream anzeigen:curl
eine Interaktion mit „monolith“ starten:kubectl exec
, um eine interaktive Shell im Pod „monolith“ auszuführen. Sie kann nützlich sein, wenn Sie innerhalb eines Containers eine Fehlerbehebung durchführen möchten:ping
testen, sobald im Container „monolith“ eine Shell ausgeführt wird:Wie Sie sehen, ist die Interaktion mit Pods genauso einfach wie die Verwendung des Befehls kubectl
. Ganz gleich, ob Sie einen Container remote ansteuern müssen oder eine Shell für die Anmeldung benötigen – Kubernetes bietet alles für einen schnellen Einstieg.
Pods sind nicht als nichtflüchtiger Speicher konzipiert. Sie können aus vielen Gründen gestoppt oder gestartet werden, beispielsweise nach fehlgeschlagenen Aktivitäts- oder Bereitschaftsprüfungen. Dies führt zu einem Problem:
Was passiert, wenn Sie mit einer Gruppe von Pods kommunizieren möchten, die Pods aber nach einem Neustart eine andere IP-Adresse haben?
An dieser Stelle kommen Dienste ins Spiel. Dienste stellen stabile Endpunkte für Pods zur Verfügung.
Dienste orientieren sich bei der Ermittlung der für sie bestimmten Pods an Labels. Die Pods mit den korrekten Labels werden von den Diensten automatisch ausgewählt und verfügbar gemacht.
Welche Zugriffsebene für eine Gruppe von Pods jeweils gültig ist, hängt von der Art des Dienstes ab. Derzeit gibt es drei Arten:
ClusterIP
(intern): Der Dienst ist nur im Cluster sichtbar. Dies ist die Standardzugriffsebene.NodePort
: Jeder Knoten im Cluster erhält eine extern zugängliche IP-Adresse.LoadBalancer
: Ein Lastenausgleichsmodul des Cloudanbieters leitet den Traffic vom Dienst an die enthaltenen Knoten weiter.Weitere Aufgaben:
Bevor Sie Dienste erstellen können, benötigen Sie einen sicheren Pod, der HTTPS-Traffic bewältigen kann.
~/orchestrate-with-kubernetes/kubernetes
zurück:Jetzt haben Sie einen sicheren Pod und können den Pod „secure-monolith“ extern verfügbar machen. Erstellen Sie dazu einen Kubernetes-Dienst.
(Ausgabe):
* Mithilfe einer Auswahl werden automatisch alle Pods mit den Labels „app: monolith“ und „secure: enabled“ gefunden und verfügbar gemacht.
* Sie müssen nun den Knotenport angeben, denn darüber wird der externe Traffic von Port 31000 zu „nginx“ (auf Port 443) geleitet.
kubectl create
den Dienst „monolith“ aus der Konfigurationsdatei:(Ausgabe):
Klicken Sie unten auf Fortschritt prüfen. Wenn Sie den Pod „monolith“ erfolgreich erstellt haben, wird ein Testergebnis angezeigt.
Sie machen den Dienst über einen Port verfügbar. Es kann also zu Kollisionen kommen, wenn andere Anwendungen versuchen, eine Bindung zu Port 31000 herzustellen.
Normalerweise erledigt Kubernetes die Port-Zuweisung. Für dieses Lab wählen Sie jedoch einen Port aus, damit die Konfiguration der Systemdiagnosen später einfacher ist.
gcloud compute firewall-rules
den Traffic an den Dienst „monolith“ am angegebenen Knotenport:Klicken Sie unten auf Fortschritt prüfen. Wenn Sie erfolgreich eine Firewallregel erstellt haben, die TCP-Traffic auf dem Port 31000 zulässt, wird ein Testergebnis angezeigt.
Nun ist alles eingerichtet und Sie können den Dienst „secure-monolith“ ohne Portweiterleitung von außerhalb des Clusters ansteuern.
curl
anzusteuern:Hoppla! Das Zeitlimit ist abgelaufen. Woran liegt das?
Hinweis: Es ist Zeit für einen kurzen Wissenstest.
Beantworten Sie die unten aufgeführten Fragen. Verwenden Sie dafür die folgenden Befehle:kubectl get services monolith
kubectl describe services monolith
Fragen:
Tipp: Es hat mit Labels zu tun. Sie beheben das Problem im nächsten Abschnitt.
Der Dienst „monolith“ hat aktuell noch keine Endpunkte. Eine Möglichkeit, Probleme dieser Art zu beheben, ist eine Label-Abfrage mit dem Befehl kubectl get pods
.
Diese Label-Abfrage druckt keine Ergebnisse aus. Sie müssen das Label „secure=enabled“ hinzufügen.
kubectl label
das fehlende Label secure=enabled
hinzu. Prüfen Sie anschließend, ob die Labels aktualisiert wurden.Hier ist einer!
Zack! Houston, wir haben Kontakt.
Klicken Sie unten auf Fortschritt prüfen. Wenn Sie den „monolith“-Pods erfolgreich Labels hinzugefügt haben, wird ein Testergebnis angezeigt.
Das Ziel dieses Labs ist es, Sie auf die Skalierung und Verwaltung von Containern in der Produktion vorzubereiten. Hier kommen Deployments ins Spiel. Sie können dafür sorgen, dass die Anzahl der ausgeführten Pods mit der vom Nutzer angegebenen Pod-Anzahl übereinstimmt.
Deployments haben vor allem den Vorteil, dass sie die Low-Level-Details der Verwaltung von Pods abstrahieren. In Deployments hinter den Kulissen werden Replikatsets für das Starten und Stoppen von Pods verwendet. Wenn Pods aktualisiert oder skaliert werden müssen, wird das vom Deployment gehandhabt. Es führt auch den Neustart von Pods durch, falls diese aus irgendeinem Grund ausfallen.
Hier ein kurzes Beispiel:
Pods sind an die Lebensdauer des Knotens gebunden, auf dem sie erstellt werden. Bei obigem Beispiel ist Knoten 3 und damit auch ein Pod ausgefallen. Das Deployment hat automatisch einen neuen Pod erstellt und diesen auf Knoten 2 gestartet. Damit entfällt für Sie die Aufgabe, manuell einen neuen Pod zu erstellen und einem Knoten zuzuordnen.
Das ist beeindruckend.
Jetzt bündeln wir alles, was Sie über Pods und Dienste gelernt haben, und teilen die Anwendung „monolith“ mithilfe von Deployments in kleinere Dienste auf.
Sie teilen die Anwendung „monolith“ jetzt in drei unabhängige Teile:
Sie sind nun bereit, Deployments zu erstellen, und zwar eines pro Dienst. Anschließend definieren Sie interne Dienste für die Deployments „auth“ und „hello“ sowie einen externen Dienst für das Deployment „frontend“. Damit können Sie danach mit Mikrodiensten genau wie mit „monolith“ interagieren, nur dass jedes Teil nun getrennt skaliert und bereitgestellt werden kann.
(Ausgabe)
Das Deployment erstellt ein Replikat und Sie verwenden Version 2.0.0 des Containers „auth“.
Wenn Sie den Befehl kubectl create
ausführen, um das Deployment „auth“ zu erstellen, wird ein Pod erstellt, der den Daten im Deployment-Manifest entspricht. Dies bedeutet, dass Sie die Anzahl der Pods skalieren können, indem Sie die im Feld „Replikate“ angegebene Zahl ändern.
kubectl create
:EXTERNAL-IP
den Status „Ausstehend“ aufweist.Die Antwort „hello“ wird zurückgegeben.
Klicken Sie unten auf Fortschritt prüfen. Wenn Sie Auth, Hello und Frontend erfolgreich bereitgestellt haben, wird ein Testergebnis angezeigt.
Glückwunsch! Sie haben mit Kubernetes eine Anwendung entwickelt, die mehrere Dienste umfasst. Mit den hier erworbenen Kenntnissen können Sie komplexe Anwendungen in Kubernetes bereitstellen, indem Sie mehrere Deployments und Dienste zusammenstellen.
In unseren Schulungen erfahren Sie alles zum optimalen Einsatz unserer Google Cloud-Technologien und können sich entsprechend zertifizieren lassen. Unsere Kurse vermitteln technische Fähigkeiten und Best Practices, damit Sie möglichst schnell mit Google Cloud loslegen und Ihr Wissen fortlaufend erweitern können. Wir bieten On-Demand-, Präsenz- und virtuelle Schulungen für Anfänger wie Fortgeschrittene an, die Sie individuell in Ihrem eigenen Zeitplan absolvieren können. Mit unseren Zertifizierungen weisen Sie nach, dass Sie Experte im Bereich Google Cloud-Technologien sind.
Anleitung zuletzt am 29. April 2024 aktualisiert
Lab zuletzt am 29. April 2024 getestet
© 2025 Google LLC. Alle Rechte vorbehalten. Google und das Google-Logo sind Marken von Google LLC. Alle anderen Unternehmens- und Produktnamen können Marken der jeweils mit ihnen verbundenen Unternehmen sein.
Diese Inhalte sind derzeit nicht verfügbar
Bei Verfügbarkeit des Labs benachrichtigen wir Sie per E-Mail
Sehr gut!
Bei Verfügbarkeit kontaktieren wir Sie per E-Mail
One lab at a time
Confirm to end all existing labs and start this one