Sie können diese Controller-Objekte mit der Kubernetes API oder mit kubectl
erstellen, eine von gcloud
installierte Befehlszeile für Kubernetes. In der Regel erstellen Sie eine Darstellung des gewünschten Kubernetes-Controller-Objekts als YAML-Konfigurationsdatei. Diese verwenden Sie dann mit der Kubernetes API oder der Befehlszeile kubectl
.
Arten von Arbeitslasten
Kubernetes bietet verschiedene Arten von Controller-Objekten für verschiedene Arten von Arbeitslasten, die Sie ausführen können. Einige Controller-Objekte eignen sich besser zur Darstellung bestimmter Arbeitslasten als andere. In den folgenden Abschnitten werden ein paar gängige Arbeitslasten und die entsprechenden Kubernetes-Controller-Objekte beschrieben, die Sie erstellen können, um die Arbeitslasten in Ihrem Cluster auszuführen. Dazu gehören:
- Zustandslose Anwendungen
- Zustandsorientierte Anwendungen
- Batch-Jobs
- Daemons
Zustandslose Anwendungen
Eine zustandslose Anwendung behält ihren Zustand nicht bei und speichert keine Daten im nichtflüchtigen Speicher – alle Nutzer- und Sitzungsdaten bleiben beim Client.
Beispiele für zustandslose Anwendungen sind Web-Front-Ends wie Nginx, Webserver wie Apache Tomcat und andere Webanwendungen.
Sie können ein Kubernetes-Deployment erstellen, um eine zustandslose Anwendung in einem Cluster bereitzustellen. Von Deployments erstellte Pods sind nicht eindeutig und behalten ihren Zustand nicht bei, wodurch das Skalieren und Aktualisieren zustandsloser Anwendungen vereinfacht wird.
Zustandsorientierte Anwendungen
Der Zustand einer zustandsorientierten Anwendung muss gespeichert werden oder dauerhaft sein. Zustandsorientierte Anwendungen nutzen nichtflüchtigen Speicher wie nichtflüchtige Volumes, um Daten zur Nutzung durch den Server oder durch andere Nutzer zu speichern.
Beispiele für zustandsorientierte Anwendungen sind Datenbanken wie MongoDB und Nachrichtenwarteschlangen wie Apache ZooKeeper.
Sie können ein Kubernetes-StatefulSet erstellen, um eine zustandsorientierte Anwendung bereitzustellen. Von StatefulSets erstellte Pods haben eindeutige Kennzeichnungen und können auf geordnete und sichere Weise aktualisiert werden.
Batch-Jobs
Batch-Jobs sind endliche, unabhängige und oft parallel laufende Aufgaben, die bis zu ihrem Abschluss ausgeführt werden. Beispiele für Batch-Jobs umfassen automatische oder geplante Aufgaben wie das Senden von E-Mails, das Rendern von Video und das Ausführen teurer Berechnungen.
Sie können einen Kubernetes-Job erstellen, um eine Batch-Aufgabe in einem Cluster auszuführen und zu verwalten. Sie können die Anzahl der Pods angeben, die ihre Aufgaben abschließen sollen, bevor der Job abgeschlossen ist, sowie die maximale Anzahl von Pods, die parallel ausgeführt werden sollen.
Daemons
Daemons führen in den zugewiesenen Knoten fortlaufende Hintergrundaufgaben aus, die keinen Eingriff des Nutzers erfordern. Beispiele für Daemons sind Log-Collector wie Fluentd und Monitoring-Dienste.
Sie können ein Kubernetes-DaemonSet erstellen, um einen Daemon in einem Cluster bereitzustellen. DaemonSets erstellen einen Pod pro Knoten. Sie können einen Knoten auswählen, in dem das DaemonSet bereitgestellt werden soll.
Arbeitslastobjekte verwalten
Sie können Objekte mit imperativen und deklarativen Methoden erstellen, verwalten und löschen. In den nächsten Abschnitten werden diese Methoden sowie die folgenden Tools beschrieben, mit denen Sie die Methoden anwenden können:
kubectl
, das mit Cloud SDK installierte Kubernetes-Befehlszeilentool.- GKE-Menü "Arbeitslasten" in der Cloud Console
- GKE REST API und Kubernetes API
Imperative Befehle
Imperative Befehle ermöglichen Ihnen, Objekte mit kubectl
schnell zu erstellen, abzurufen, zu aktualisieren und zu löschen. Diese Befehle eignen sich für einmalige Aufgaben oder für Änderungen an aktiven Objekten in einem Cluster.
Imperative Befehle werden häufig verwendet, um im Cluster bereitgestellte Liveobjekte zu bearbeiten.
kubectl
bietet eine Reihe von verb-gesteuerten Befehlen zur Erstellung und Bearbeitung von Kubernetes-Objekten. Beispiel:
run
: Erzeugt ein neues Objekt im Cluster. Sofern nicht anders angegeben, erstelltrun
ein Deployment-Objekt.run
unterstützt außerdem mehrere andere Generatoren.expose
: Erstellt ein neues Dienstobjekt, um Traffic mithilfe von Load-Balancing auf eine Gruppe von mit Labels versehenen Pods zu verteilen.autoscale
: Erstellt ein neues Autoscaling-Objekt, um ein Controller-Objekt, etwa ein Deployment, automatisch horizontal zu skalieren.
Imperative Befehle können auch ohne umfangreiche Kenntnisse zu Objektschemas verwendet werden und erfordern keine Konfigurationsdateien.
Imperative Objektkonfiguration
Bei der imperativen Objektkonfiguration werden Objekte anhand von Konfigurationsdateien mit vollständig festgelegten Objektdefinitionen erstellt, aktualisiert und gelöscht. Das Speichern von Objektkonfigurationsdateien in Quellcode-Verwaltungssystemen und das Überprüfen von Änderungen ist einfacher als mit imperativen Befehlen.
Sie haben die Möglichkeit, die Vorgänge kubectl apply
, delete
und replace
mit Konfigurationsdateien oder mit Verzeichnissen auszuführen, die Konfigurationsdateien enthalten.
Deklarative Objektkonfiguration
Die deklarative Objektkonfiguration basiert auf lokal gespeicherten Konfigurationsdateien, erfordert jedoch keine explizite Definition der auszuführenden Vorgänge. Stattdessen werden Vorgänge von kubectl
automatisch pro Objekt erkannt. Dies ist nützlich, wenn Sie mit einem Verzeichnis von Konfigurationsdateien mit vielen verschiedenen Operationen arbeiten.
Die deklarative Objektverwaltung erfordert ein ausgeprägtes Verständnis von Objektschemas und Konfigurationsdateien.
Sie können kubectl apply
ausführen, um Objekte zu erstellen und Objekte deklaratorisch zu aktualisieren. apply
aktualisiert Objekte. Dazu wird das gesamte Liveobjekt gelesen, bevor die Unterschiede berechnet und dann durch das Senden von Patch-Anfragen an den API-Server zusammengeführt werden.
Console
Nachdem Sie eine Arbeitslast mit kubectl
oder der API bereitgestellt haben, können Sie in der Cloud Console über das GKE-Menü Arbeitslasten Arbeitslasten prüfen, verwalten und bearbeiten, die auf den Clustern ausgeführt werden.
Das Menü bietet folgende Features:
- Sie können den YAML-basierten Texteditor verwenden, um Liveobjekte im Webbrowser zu bearbeiten.
- Sie können detaillierte Informationen zu Objekten einsehen, einschließlich Überarbeitungsverlauf, aktuelle Ereignisse und Aktivitäten sowie zugehörige verwaltete Pods.
- Sie können Deployments, Jobs und StatefulSets problemlos skalieren.
- Sie können die automatische Skalierung verwenden, Rolling Updates auslösen und Deployments manuell über das Menü Aktionen skalieren.
- Sie können Cloud Shell verwenden, um Objekte zu untersuchen, zu bearbeiten und zu löschen.
API
Sie können die GKE REST API und die Kubernetes API zusätzlich zu den Google Cloud-Clientbibliotheken verwenden, um Arbeitslasten programmatisch zu erstellen und zu verwalten.
Konfigurationsdateien
Wenn Sie eine Arbeitslast mit einer der zuvor beschriebenen Methoden bereitstellen, fügt GKE dem Cluster eine Konfigurationsdatei hinzu, die das Objekt darstellt.
Die Livekonfiguration eines Objekts unterscheidet sich möglicherweise von der entsprechenden lokalen Datei. YAML wird am häufigsten verwendet, um Kubernetes-Objekte zu erstellen und darzustellen. Sie können auch JSON verwenden.
Weitere Informationen zu Objektspezifikationen und Statusmeldungen von Kubernetes sowie der Kubernetes API finden Sie unter Understanding Kubernetes Objects und in der Referenz zur Kubernetes API.
Livekonfigurationen untersuchen
Console
Zum Prüfen der Livekonfiguration eines bereitgestellten Objekts führen Sie folgende Schritte aus:
Rufen Sie in der Cloud Console das Google Kubernetes Engine-Menü "Arbeitslasten" auf.
Wählen Sie die gewünschte Arbeitslast aus.
Klicken Sie auf YAML.
gcloud
Führen Sie den folgenden Befehl aus, um die Livekonfiguration eines bereitgestellten Objekts zu untersuchen:
kubectl get [OBJECT_TYPE] [OBJECT_NAME] -o yaml
[OBJECT_TYPE] kann deployment
, statefulset
, job
oder ein anderer Objekttyp sein. Beispiel:
kubectl get deployment my-stateless-app -o yaml
Weitere Informationen
- Weitere Informationen zur Bereitstellung zustandsloser Anwendungen
- Weitere Informationen zur Bereitstellung zustandsorientierter Anwendungen
- Informationen zur Skalierung von Anwendungen
- Clusterarchitektur