Auf dieser Seite werden die Best Practices für das Erstellen und Optimieren von Batchverarbeitungsplattformen mit Google Kubernetes Engine (GKE) vorgestellt. Dazu gehören Best Practices für:
- Architektur
- Jobverwaltung:
- Mehrinstanzenfähigkeit
- Sicherheit
- In Warteschlangen stellen
- Speicherplatz
- Leistung
- Kosteneffizienz
- Monitoring
GKE bietet ein leistungsstarkes Framework für die Orchestrierung von Batcharbeitslasten wie Datenverarbeitung, Training von ML-Modellen, Ausführen von wissenschaftlichen Simulationen und andere Hochleistungs-Computing-Arbeitslasten.
Diese Best Practices richten sich an Plattformadministratoren, Cloud-Architekten und Betriebsexperten, die an der Bereitstellung von Batcharbeitslasten in GKE interessiert sind. Die Referenzarchitektur für eine Batchverarbeitungsplattform in GKE zeigt viele der in diesem Leitfaden beschriebenen Best Practices und kann in Ihrem eigenen Google Cloud-Projekt bereitgestellt werden.
Funktionsweise von Batcharbeitslasten
Eine Batcharbeitslast ist eine Gruppe von Aufgaben, die ohne Nutzereingriff abgeschlossen werden. Zum Definieren von Aufgaben verwenden Sie die Kubernetes-Ressource Jobs. Eine Batchplattform empfängt die Jobs und stellt sie in der Reihenfolge ihres Eingangs in die Warteschlange. Die Warteschlange in der Batch-Plattform wendet Verarbeitungslogik wie Priorität, Kontingent und zuweisbare Ressourcen an. Durch Warteschlangen und Anpassung der Batchverarbeitungsparameter können Sie in Kubernetes die Nutzung verfügbarer Ressourcen optimieren, die Inaktivitätszeit von geplanten Jobs minimieren und die Kosteneinsparung maximieren. Das folgende Diagramm zeigt die GKE-Komponenten, die Teil einer Batchplattform sein können.
Batch-Plattformverwaltung
Traditionell haben Batch-Plattformen zwei Hauptnutzer-Identitäten, Entwickler und Plattformadministratoren:
- Ein Entwickler sendet einen Job, der das Programm, die zu verarbeitenden Daten und die Anforderungen für den Job angibt. Anschließend erhält der Entwickler eine Bestätigung der Jobübermittlung und eine eindeutige Kennzeichnung. Wenn der Job abgeschlossen ist, erhält der Entwickler eine Benachrichtigung zusammen mit den Ausgaben oder Ergebnissen des Jobs.
- Ein Plattformadministrator verwaltet und stellt eine effiziente und zuverlässige Batchverarbeitungsplattform für die Entwickler bereit.
Eine Batchverarbeitungsplattform muss folgende Anforderungen erfüllen:
- Die Plattformressourcen werden ordnungsgemäß bereitgestellt, um sicherzustellen, dass Jobs mit geringem oder gar keinem Nutzereingriff ausgeführt werden.
- Die Plattformressourcen werden gemäß den Best Practices für Sicherheit und Beobachtbarkeit der Organisation konfiguriert.
- Die Plattformressourcen werden so effizient wie möglich genutzt. Bei Ressourcenkonflikten wird die wichtigste Arbeit zuerst ausgeführt.
Batchplattformarchitektur in GKE vorbereiten
Eine GKE-Umgebung besteht aus Knoten, bei denen es sich um virtuelle Compute Engine-Maschinen (VMs) handelt, die zusammen einen Cluster bilden.
In der folgenden Tabelle sind die wichtigsten Empfehlungen für die Planung und Gestaltung Ihrer Batchplattformarchitektur aufgeführt:
Empfehlung | Ressourcen | |
---|---|---|
GKE-Betriebsmodus auswählen |
In GKE stehen folgende Betriebsmodi zur Verfügung:
Weitere Informationen finden Sie unter Vergleich des Autopilot- und Standardmodus. |
|
Maschinentyp für Knoten auswählen |
GKE unterstützt die folgende Reihe von Compute Engine-VMs:
Jede Maschinenreihe ist einer oder mehreren CPU-Plattformen zugeordnet, z. B. ARM-Prozessoren und x86-Prozessoren von Intel und AMD. |
|
Hardwarebeschleuniger für Knoten verwenden |
Sie können in GKE auch Hardwarebeschleuniger wie Grafikprozessoren (GPUs) und Tensor Processing Units (TPUs) verwenden. Betrachten Sie die GPU-Zeitfreigabe-Strategie, bei der mehrere Container die gleiche Zeit auf derselben physischen GPU teilen können. Dieser Ansatz eignet sich für Burst- und homogene GPU-Arbeitslasten mit niedrigen Anfragen. GPUs mit mehreren Instanzen partitionieren GPUs, um eine einzelne GPU-Ressource für mehrere Container gleichzeitig freizugeben.
|
|
Cluster Autoscaler für Standardcluster aktivieren | GKE passt die Größe der Knoten in einem bestimmten Knotenpool automatisch an die Anforderungen Ihrer Arbeitslasten an. Sie müssen weder Knoten manuell hinzufügen oder entfernen noch Ihre Knotenpools überdimensionieren. Stattdessen geben Sie nur eine Mindest- und eine maximale Größe für den Knotenpool an. Es wird empfohlen, Cluster Autoscaler mit der folgenden Konfiguration festzulegen:
Mit Autopilot-Clustern müssen Sie sich keine Gedanken über die Bereitstellung von Knoten oder die Verwaltung von Knotenpools machen, da Knotenpools automatisch über die automatische Knotenbereitstellung bereitgestellt und automatisch skaliert werden, um die Anforderungen Ihrer Arbeitslasten zu erfüllen. |
|
Cluster in einer Release-Version registrieren | GKE kann Ihre Clusterversion und Upgrades automatisch verwalten. Basierend auf Ihrem Release-Akzeptanzmodell können Sie Ihren Cluster bei den verfügbaren GKE-Kanälen registrieren.
Weitere Informationen finden Sie unter Beste Release-Version für Ihre Cluster auswählen. | |
Umfang des Wartungsausschlusses für den Cluster definieren | Wenn ein Ausschlussfenster für den Upgradebereich definiert ist, berücksichtigt GKE, dass lange laufende Batcharbeitslasten erst nach Abschluss einer Wartung unterbrochen werden.
Weitere Informationen finden Sie unter Umfang des Wartungsausschlusses. |
Joblebenszyklus verwalten
In Kubernetes führen Sie Ihre Arbeitslasten in einer Reihe von Pods aus. Pods sind Gruppen aus einzelnen oder mehreren Containern mit gemeinsam genutztem Speicher und Netzwerkressourcen. Pods werden durch eine Kubernetes-Spezifikation definiert.
Ein Job erstellt einen oder mehrere Pods und wiederholt die Ausführung der Pods, bis eine festgelegte Anzahl von Pods erfolgreich beendet wird. Wenn die Pods abgeschlossen sind, verfolgt der Job die erfolgreichen Vervollständigungen. Wenn eine bestimmte Anzahl erfolgreicher Ausführungen erreicht ist, wird der Job abgeschlossen.
In der folgenden Tabelle sind die wichtigsten Empfehlungen beim Entwerfen und Verwalten von Jobs aufgeführt:
Empfehlung | Ressourcen |
---|---|
Modus für den Jobabschluss auswählen | Geben Sie den Abschlussmodus als Indexed an. Diese Konfiguration ist nützlich, wenn Sie eine Partition der zu verarbeitenden Daten basierend auf dem Pod-Index zuweisen. Die Pods eines Jobs erhalten einen zugehörigen Abschlussindex. Wenn Sie einen Job löschen, werden die von ihm erstellten Pods bereinigt. Durch das Anhalten eines Jobs werden seine aktiven Pods gelöscht, bis der Job wieder fortgesetzt wird.
|
CronJobs für reguläre geplante Aktionen festlegen | Verwenden Sie CronJob für GKE, um regelmäßige geplante Aktionen durchzuführen, wie z. B. Sicherungen, Berichtsgenerierung oder geplantes Training für Modelle für maschinelles Lernen. |
Fehler in einem Job verwalten | Definieren Sie die Kubernetes-Pod-Fehlerrichtlinie und das Fehlerlimit für Pod-Backoffs, um wiederholbare und nicht wiederholbare Fehler in einem Job zu beheben. Diese Definition verbessert den Verbrauch der Clusterressourcen, da unnötige Pod-Wiederholungen und Jobfehler aufgrund von Pod-Unterbrechungen vermieden werden. Sie können beispielsweise eine präemptive Bereinigung, eine API-initiierte Bereinigung oder eine markierungsbasierte Bereinigung konfigurieren, bei der Pods ohne Toleranz für den |
Mehrere Jobs als Einheit verwalten | Verwenden Sie die JobSet API, um mehrere Jobs als Einheit zu verwalten, um Arbeitslastmuster wie einen Treiber (oder Koordinator) und mehrere Worker (z. B. MPIJob ) zu adressieren, während Sie Standardeinstellungen für Jobs festlegen, die anhand Ihrer Anwendungsfälle an allgemeinen Mustern ausgerichtet sind. Sie können beispielsweise einen indexierten Job erstellen und einen monitorlosen Dienst für vorhersehbare vollständig qualifizierte Domainnamen (FQDN) für Pods erstellen und die zugehörige Pod-Fehlerrichtlinie festlegen. |
Laufzeit für einen Pod verlängern, der Neustarts nicht toleriert | Legen Sie die Kubernetes-Annotation cluster-autoscaler.kubernetes.io/safe-to-evict in der Pod-Spezifikation auf false fest. Cluster Autoscaler berücksichtigt die auf Pods festgelegten Bereinigungsregeln. Diese Einschränkungen können das Löschen eines Knotens verhindern, wenn er einen Pod mit der Annotation cluster-autoscaler.kubernetes.io/safe-to-evict enthält.
Weitere Informationen finden Sie unter Pod-Planung und -Unterbrechungen berücksichtigen. |
Mandantenfähigkeit verwalten
Die Mehrmandantenfähigkeit des GKE-Clusters ist eine Alternative zur Verwaltung von GKE-Ressourcen durch verschiedene Nutzer oder Arbeitslasten, sogenannte Mandanten, in einer einzelnen Organisation. Die Verwaltung von GKE-Ressourcen kann Kriterien wie die Mandantenisolation, Kontingente und Limitbereiche oder die Kostenzuweisung erfüllen.
In der folgenden Tabelle sind die wichtigsten Empfehlungen bei der Verwaltung der Mehrmandantenfähigkeit aufgeführt:
Empfehlung | Ressourcen |
---|---|
Mandantenisolation mit Namespaces verwalten | Sie können jeden Mandanten und die zugehörigen Kubernetes-Ressourcen in separate Namespaces aufteilen. |
Mandantenisolation mithilfe von Richtlinien erzwingen | Definieren Sie Richtlinien, um den API-Zugriff zu beschränken, Kontingente festzulegen, die Ressourcennutzung einzuschränken und die Berechtigungen von Containern einzuschränken. Diese Richtlinien sind auf Namespaces beschränkt. |
GKE-Kostenzuordnung festlegen | Verwenden Sie die GKE-Kostenzuordnung, um Informationen zu Cluster-Ressourcenanfragen für jeden Mandanten auf Namespace-Basis zu erhalten. |
Zugriff auf die Batchplattform steuern
Mit GKE können Sie die Zugriffsberechtigungen der auf dem Cluster ausgeführten Arbeitslasten optimieren.
In der folgenden Tabelle sind die wichtigsten Empfehlungen für die Verwaltung von Zugriff und Sicherheit aufgeführt
Empfehlung | Ressourcen |
---|---|
Identitätsföderation von Arbeitslasten für GKE festlegen | GKE ermöglicht Arbeitslasten in Ihrem GKE-Cluster, die Identität von Identity and Access Management (IAM)-Dienstkonten für den Zugriff auf Google Cloud-Dienste anzunehmen. Mithilfe der Identitätsföderation von Arbeitslasten für GKE können Arbeitslasten sicher auf Secrets zugreifen, die außerhalb von GKE gespeichert sind.
Weitere Informationen finden Sie unter Identitätsföderation von Arbeitslasten für GKE und Auf gespeicherte Secrets zugreifen. |
Cluster-Netzwerkisolation festlegen | Verwenden Sie private Cluster, bei denen sowohl der Endpunkt der Steuerungsebene als auch die Worker-Knoten interne IP-Adressen haben können. Sie können die Cluster-Isolierung auch für vorhandene öffentliche Cluster ändern, die Private Service Connect verwenden.
Weitere Informationen finden Sie unter Öffentliche Cluster und Clusterisolation ändern. |
Shielded GKE-Knoten verwenden | Shielded GKE-Knoten konfigurieren, um eine starke, überprüfbare Knotenidentität und -integrität zu bieten, die die Sicherheit von GKE-Knoten erhöht. |
Physische Isolation | Aus Sicherheitsgründen benötigen Ihre Arbeitslasten möglicherweise eine stärkere Isolation. Steuern Sie die Planung mit Knotenmarkierungen, um Mandanten in Knotenpools mithilfe von Knotenmarkierungen und Arbeitslasttoleranzen physisch zu trennen. Dadurch wird sichergestellt, dass nur die entsprechenden Arbeitslasten auf diesen Knotenpools geplant werden. |
Warteschlangen und faire Freigabe
Zur Kontrolle des Ressourcenverbrauchs können Sie jedem Mandanten ein Limit für Ressourcenkontingente zuweisen, eingehende Jobs in die Warteschlange stellen und Jobs in der Reihenfolge verarbeiten, in der sie empfangen wurden.
In der folgenden Tabelle sind die wichtigsten Empfehlungen für die Verwaltung von Warteschlangen und fairer Freigabe bei Batcharbeitslasten aufgeführt:
Empfehlung | Ressourcen |
---|---|
Kueue verwenden | Kueue ist ein Kubernetes-natives Jobwarteschlangensystem für Batch-, Hochleistungs-Computing-, maschinelle Lern- und ähnliche Anwendungen in einem Kubernetes-Cluster. Um die faire Freigabe von Clusterressourcen zwischen seinen Mandanten zu gewährleisten, verwaltet Kueue Kontingente und deren Nutzung durch Jobs. Kueue trifft die folgenden Entscheidungen:
Informationen zum Implementieren eines Jobwarteschlangensystems finden Sie unter Jobwarteschlangensystem mit Kontingentfreigabe zwischen Namespaces in GKE implementieren. Weitere Informationen zu Kueue finden Sie unter Kueue-Konzepte. |
Speicher, Leistung und Kosteneffizienz
Durch die effiziente Nutzung unserer GKE-Computing- und Speicherressourcen können Sie die Kosten senken. Eine Strategie besteht darin, die Größe Ihrer Compute-Instanzen so anzupassen, dass sie Ihren Batchverarbeitungsanforderungen entsprechen, ohne die Leistung zu beeinträchtigen.
In der folgenden Tabelle sind die wichtigsten Empfehlungen für das Entwerfen und Verwalten von Speicher und das Optimieren der Leistung aufgeführt:
Empfehlung | Ressourcen |
---|---|
Nichtflüchtige Compute Engine-Speicher verwenden | Wir empfehlen die folgenden Konfigurationen für nichtflüchtigen Speicher von Compute Engine:
|
Network Attached Storage verwenden | Verwenden Sie den folgenden netzgebundenen Speicher zusammen mit Persistent Disk, um eine optimale Speicherleistung zu erzielen:
|
Pub/Sub definieren | Ihre Batcharbeitslast kann auch Daten lesen und schreiben. Sie können beispielsweise Pub/Sub verwenden und die Ergebnisse in ein Data Warehouse wie BigQuery schreiben, von dem aus Berichte und Dashboards aktualisiert werden. Wir empfehlen die folgenden Speicherlösungen:
|
Abstimmungsparameter für Ihre Arbeitslast angeben | Wir empfehlen die folgenden Konfigurationen:
|
Arbeitslasten und Latenz von Arbeitslasten optimieren | GKE unterstützt die Richtlinie für kompakte Platzierung für Knotenpools. Diese gibt an, dass diese Knoten (und damit die darauf ausgeführten Arbeitslasten) nahe zueinander innerhalb einer Zone platziert werden sollen. Dies ist besonders für eng gekoppelte und leistungsstarke Arbeitslasten nützlich, bei denen eine niedrige Latenz zwischen verschiedenen Prozessen, die die Arbeitslast umfassen, von größter Bedeutung ist. Weitere Informationen finden Sie unter Kompakte Platzierung. |
Spot-VMs verwenden | Spot-VMs sind Compute Engine-VM-Instanzen, die günstiger als Standard-VMs von Compute Engine sind und keine Verfügbarkeit garantieren. Wir empfehlen die folgenden Lösungen:
|
Image-Draining verwenden | Container-Images mithilfe von Image-Streaming abrufen GKE streamt Daten aus zulässigen Images. Auf diese Weise können Ihre Arbeitslasten initialisiert werden, ohne auf den Download des gesamten Images warten zu müssen. Dies führt zu deutlich verbesserten Initialisierungszeiten und einer höheren Kosteneffizienz. |
Monitoring
GKE ist in Beobachtbarkeits- und Logging-Tools eingebunden, mit denen Sie die Zuverlässigkeit und Effizienz Ihres Clusters überwachen können. In der folgenden Tabelle sind die wichtigsten Empfehlungen bei der Aktivierung und Verwendung von GKE-Beobachtbarkeitstools aufgeführt:
Empfehlung | Ressourcen |
---|---|
Prometheus verwenden | GKE ist in Google Cloud Observability eingebunden. Messwerte anpassen, die GKE an Cloud Logging und Cloud Monitoring senden soll Google Cloud Managed Service for Prometheus ist standardmäßig für GKE-Cluster aktiviert. Wir empfehlen die Verwendung der verwalteten Erfassung, um die Komplexität der Einrichtung und Wartung von Prometheus-Servern zu vermeiden. Weitere Informationen finden Sie unter Verwalteter Dienst für Prometheus. |
Cloud Monitoring-Dashboards verwenden | Verwenden Sie die Monitoring-Dashboards für GKE, um eine allgemeine Übersicht über die Cluster- und Ressourcennutzung zu erhalten und die verschiedenen Messwerte und Dimensionen aufzuschlüsseln und zu filtern. Weitere Informationen finden Sie unter GKE-Cluster beobachten. |
Nächste Schritte
- Batchsystem mit Kueue bereitstellen
- Befolgen Sie die Best Practices zum Ausführen kostenoptimierter Kubernetes-Anwendungen in GKE