Anwendung in einem GKE-Cluster bereitstellen
In dieser Kurzanleitung stellen Sie eine einfache Webserver-Containeranwendung in einem Google Kubernetes Engine-Cluster (GKE) bereit. Sie erfahren, wie Sie einen Cluster erstellen und die Anwendung im Cluster bereitstellen, damit Nutzer darauf zugreifen können.
In dieser Kurzanleitung werden Grundkenntnisse in Kubernetes vorausgesetzt.
Hinweis
Führen Sie folgende Schritte aus, um die Kubernetes Engine API zu aktivieren:- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry and Google Kubernetes Engine APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry and Google Kubernetes Engine APIs.
Cloud Shell starten
In dieser Anleitung verwenden Sie Cloud Shell, eine Shell-Umgebung für die Verwaltung von Ressourcen, die in Google Cloud gehostet werden.
Die Google Cloud CLI und das kubectl-Befehlszeilentool sind in Cloud Shell vorinstalliert. Die gcloud CLI ist die primäre Befehlszeile für Google Cloud und kubectl
ist die primäre Befehlszeile zum Ausführen von Befehlen für Kubernetes-Cluster.
Cloud Shell aufrufen
Öffnen Sie die Google Cloud Console.
Klicken Sie in der oberen rechten Ecke der Console auf die Schaltfläche Cloud Shell aktivieren:
In einem Frame im unteren Teil der Console wird eine Cloud Shell-Sitzung geöffnet.
In dieser Shell führen Sie gcloud
- und kubectl
-Befehle aus.
Bevor Sie Befehle ausführen, legen Sie Ihr Standardprojekt in der Google Cloud CLI mit dem folgenden Befehl fest:
gcloud config set project PROJECT_ID
Ersetzen Sie PROJECT_ID
durch Ihre Projekt-ID.
GKE-Cluster erstellen
Ein Cluster besteht aus mindestens einer Maschine mit der Cluster-Steuerungsebene und mehreren Worker-Maschinen, die Knoten genannt werden. Knoten sind Compute Engine-VM-Instanzen, auf denen die erforderlichen Kubernetes-Prozesse ausgeführt werden, um die Knoten in den Cluster einzubinden. In diesem Fall stellen Sie Anwendungen für Cluster bereit und die Anwendungen werden auf den Knoten ausgeführt.
Erstellen Sie einen Autopilot-Cluster mit dem Namen hello-cluster
:
gcloud container clusters create-auto hello-cluster \
--location=us-central1
Authentifizierungsdaten für den Cluster abrufen
Nach dem Erstellen des Clusters müssen Sie Anmeldedaten für die Authentifizierung abrufen, damit Sie mit dem Cluster interagieren können.
gcloud container clusters get-credentials hello-cluster \
--location us-central1
Mit diesem Befehl wird kubectl
für die Verwendung des von Ihnen erstellten Clusters konfiguriert.
Anwendung im Cluster bereitstellen
Nachdem Sie einen Cluster erstellt haben, können Sie eine containerisierte Anwendung bereitstellen. Für diese Kurzanleitung können Sie unsere Beispielwebanwendung hello-app
bereitstellen.
GKE verwendet Kubernetes-Objekte, um die Clusterressourcen zu erstellen und zu verwalten. Kubernetes stellt das Deployment für die Bereitstellung zustandsloser Anwendungen wie Webserver bereit. Über Dienstobjekte werden Regeln und das Load Balancing für den Zugriff auf Ihre Anwendung über das Internet festgelegt.
Deployment erstellen
Zum Ausführen von hello-app
in Ihrem Cluster müssen Sie die Anwendung mit folgendem Befehl bereitstellen:
kubectl create deployment hello-server \
--image=us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
Der Kubernetes-Befehl kubectl create deployment
erstellt ein Deployment namens hello-server
. Der Pod des Deployments führt das Container-Image hello-app
aus.
Dabei gilt:
--image
gibt das bereitzustellende Container-Image an. In diesem Fall ruft der Befehl das Beispiel-Image aus einem Artifact Registry-Repository (us-docker.pkg.dev/google-samples/containers/gke/hello-app
) ab.:1.0
gibt die jeweils abzurufende Image-Version an. Wenn Sie keine Version angeben, wird das Image mit demlatest
Standard-Tag verwendet.
Deployment freigeben
Nach dem Deployment der Anwendung müssen Sie sie für das Internet freigeben, damit Nutzer darauf zugreifen können. Sie können Ihre Anwendung bereitstellen, indem Sie einen Dienst erstellen, eine Kubernetes-Ressource, die Ihre Anwendung für externen Datenverkehr verfügbar macht.
Führen Sie den folgenden kubectl expose
-Befehl aus, um die Anwendung freizugeben:
kubectl expose deployment hello-server \
--type LoadBalancer \
--port 80 \
--target-port 8080
Wenn Sie das Flag --type LoadBalancer
übergeben, wird ein Compute Engine-Load-Balancer für den Container erstellt. Das Flag --port
initialisiert den öffentlichen Port 80 für das Internet und das Flag --target-port
leitet den Traffic zu Port 8080 der Anwendung weiter.
Load-Balancer werden nach den Preisen für Load-Balancing von Compute Engine berechnet.
Anwendung prüfen und ansehen
Sehen Sie sich die ausgeführten Pods mit
kubectl get pods
an:kubectl get pods
Auf dem Cluster müsste ein
hello-server
-Pod ausgeführt werden.Sehen Sie sich den Dienst
hello-server
mitkubectl get service
an:kubectl get service hello-server
Kopieren Sie in der Ausgabe dieses Befehls die externe IP-Adresse aus der Spalte
EXTERNAL-IP
.Rufen Sie die Anwendung in Ihrem Webbrowser auf. Geben Sie dazu die externe IP-Adresse mit dem freigegebenen Port ein:
http://EXTERNAL_IP
Sie haben gerade eine Container-Webanwendung in GKE bereitgestellt.
Bereinigen
Mit den folgenden Schritten vermeiden Sie, dass Ihrem Google Cloud-Konto die in dieser Anleitung verwendeten Ressourcen in Rechnung gestellt werden:
Löschen Sie den Dienst der Anwendung mit
kubectl delete
:kubectl delete service hello-server
Dieser Befehl löscht den Compute Engine-Load-Balancer, den Sie beim Freigeben des Deployments erstellt haben.
Löschen Sie den Cluster mit
gcloud container clusters delete
:gcloud container clusters delete hello-cluster \ --location us-central1
Optional: hello-app
-Codeüberprüfung
hello-app
ist eine einfache Webserveranwendung, die aus zwei Dateien besteht: main.go
und einem Dockerfile
.
hello-app
ist als Docker-Container-Image verpackt. Container-Images werden in einer beliebigen Docker-Image-Registry wie Artifact Registry gespeichert. Wir hosten hello-app
in einem Artifact Registry-Repository unter us-docker.pkg.dev/google-samples/containers/gke/hello-app
.
main.go
main.go
ist eine Webserverimplementierung, die in der Programmiersprache Go geschrieben wurde.
Der Server antwortet auf jede HTTP-Anfrage mit der Nachricht "Hello, world!".
Dockerfile
Dockerfile
beschreibt das Image, das Docker erstellen soll, einschließlich aller seiner Ressourcen und Abhängigkeiten. Außerdem ist dort angegeben, welchen Netzwerkport die Anwendung freigeben soll. Weitere Informationen zur Funktionsweise dieser Datei finden Sie in der Docker-Dokumentation unter Dockerfile reference.
Nächste Schritte
- Weitere Informationen zur Erstellung von Clustern.
- Weitere Informationen zu Kubernetes
- Informationen, wie Sie eine einfache Webserveranwendung verpacken, hosten und bereitstellen.
- Kubernetes-Anwendung mit Cloud Code für VS Code oder Cloud Code für IntelliJ bereitstellen.
- Linux-Anwendungen in Container umwandeln
Überzeugen Sie sich selbst
Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit von GKE in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
GKE kostenlos testen