Arbeiten mit Jobs und Jobausführungen
In diesem Abschnitt erfahren Sie, wie Sie in IBM Cloud® Code Engine Jobs ausführen. Ein Job führt eine oder mehrere Instanzen Ihres ausführbaren Codes parallel aus. Im Gegensatz zu Anwendungen, die HTTP-Anforderungen verarbeiten, sind Jobs so konzipiert, dass sie einmal ausgeführt werden und den Vorgang beenden. Wenn Sie einen Job erstellen, können Sie Informationen für die Workloadkonfiguration angeben, die bei jeder Ausführung des Jobs verwendet werden.
Vorbereitende Schritte
- Verstehen Sie die Konzepte von Batch-Job-Workloads innerhalb von Code Engine. Weitere Informationen zu Batch-Aufträgen finden Sie unter Arbeitsbelastung durch Batch-Aufträge.
- Planen und wählen Sie Ihren Ansatz für die Ausführung Ihres Codes als Code Engine-Jobkomponente aus. Weitere Informationen über die zu erstellenden Typen von Code Engine Workloads finden Sie unter Planung für Code Engine.
- Sie können mit Aufträgen und Auftragsläufen auf zwei Arten arbeiten:
- Wenn Sie die Konsole Code Engine verwenden möchten, gehen Sie zur Übersicht Code Engine.
- Wenn Sie die Befehlszeilenschnittstelle verwenden möchten, richten Sie die Umgebung der Code Engine-Befehlszeilenschnittstelle ein.
Code Engine stellt CRD-Methoden (CRD = Custom Resource Definition) bereit. Weitere Informationen finden Sie in den Batch-CRD-Methoden.
Wie kann ich meinen Code als Code Engine-Jobkomponente ausführen?
Unabhängig davon, ob Ihr Code als Quellcode in einer lokalen Datei oder in einem Git-Repository vorliegt oder ob es sich bei Ihrem Code um ein Container-Image handelt, das in einem öffentlichen oder privaten Verzeichnis vorhanden ist, bietet Code Engine eine optimierte Möglichkeit, Ihren Code als Auftrag auszuführen.
-
Wenn Sie ein Container-Image gemäß dem Standard der Open Container Initiative(OCI) haben, müssen Sie beim Erstellen Ihres Auftrags nur einen Verweis auf das Image angeben, der auf den Speicherort Ihrer Container-Registrierung verweist. Sie können Ihren Job aus Bildern in einem öffentlichen oder privaten Register erstellen und dann von Ihrem Joblauf aus auf das referenzierte Bild zugreifen.
-
Wenn Sie mit einem Quellcode beginnen, der sich in einem Git-Repository befindet, können Sie auf den Speicherort Ihrer Quelle verweisen, und Code Engine kümmert sich darum, das Image aus Ihrer Quelle zu erstellen und den Auftrag mit einem einzigen Vorgang zu erstellen. In diesem Szenario lädt Code Engine Ihr Image in IBM Cloud® Container Registry hoch. Weitere Informationen finden Sie unter Job aus Repository-Quellcode erstellen. Wenn Sie mehr Kontrolle über den Build Ihres Image möchten, können Sie das Image mit Code Engine erstellen, bevor Sie den Job generieren und ausführen.
-
Wenn Sie mit dem Quellcode auf einer lokalen Workstation beginnen, können Sie auf den Speicherort Ihrer Quelle verweisen, und Code Engine kümmert sich darum, das Bild aus Ihrer Quelle zu erstellen und den Auftrag mit einem einzigen CLI-Befehl zu erstellen. In diesem Szenario lädt Code Engine Ihr Image in IBM Cloud® Container Registry hoch. Weitere Informationen finden Sie unter Job aus lokalem Quellcode über die Befehlszeilenschnittstelle erstellen. Wenn Sie mehr Kontrolle über den Build Ihres Image möchten, können Sie das Image mit Code Engine erstellen, bevor Sie den Job generieren und ausführen.
Nachdem Sie Ihren Job erstellt und ausgeführt haben, können Sie Ihren Job auch aktualisieren, indem Sie irgendeine der oben genannten Methoden ausführen, unabhängig davon, wie Sie Ihren Job erstellt oder zuvor aktualisiert haben.
Wenn Sie mit Jobs arbeiten, sollten Sie die folgenden wichtigen Dinge beachten.
- Im Gegensatz zu Anwendungsimages verfügen die Job-Images nicht über einen HTTP-Server.
- Das ausführbare Programm im Bild muss mit einem Code von Null beendet werden, um als erfolgreich zu gelten.
- Das Image kann von einer öffentlichen oder privaten Image-Registry heruntergeladen werden. Weitere Informationen finden Sie unter Auf Container-Registrys zugreifen.
Wenn Sie Ihren Job ausführen, wird die neueste Version Ihres referenzierten Container-Image für die Jobausführung verwendet, sofern für das Image kein Tag angegeben ist. Wenn ein Tag für das Image angegeben wird, wird das mit Tags versehene Image für die Jobausführung verwendet.
Hinweise zur HTTP-Handhabung
Wenn Sie mit Jobs (oder Apps) arbeiten, ist es hilfreich, die grundlegende HTTP-Handhabung in Code Engine zu kennen. Siehe Hinweise zur HTTP-Handhabung
Optionen für Erstellung und Ausführung von Jobs
Hier finden Sie Informationen zu den Optionen, die Sie beim Erstellen oder Ausführen Ihres Jobs angeben können. Je nachdem, ob Sie die Konsole oder die Befehlszeilenschnittstelle verwenden, sind möglicherweise andere Optionen verfügbar.
Speicher und CPU für Jobs
Wenn Sie Ihren Auftrag bereitstellen, können Sie die Menge an Arbeitsspeicher und CPU angeben, die Ihr Auftrag verbrauchen kann. Diese Angaben variieren, je nachdem, ob Ihr Job rechenintensiv oder speicherintensiv ist oder sich durch eine ausgewogene Nutzung auszeichnet.
Standardmäßig werden Ihrem Job 4 GB Speicher und 1 vCPU zugeordnet. Weitere Informationen zum Auswählen von Speicher und CPU finden Sie unter Unterstützte Speicher-und CPU-Kombinationen.
Job mit Befehlen und Argumenten erstellen und ausführen
Sie können beim Erstellen oder Ausführen Ihres Jobs Befehle und Argumente für den Job definieren, die zur Laufzeit verwendet werden sollen.
Sie können Ihrem Job über die Befehlszeilenschnittstelle oder die Konsole Befehle und Argumente hinzufügen.
Verwenden Sie zum Hinzufügen von Befehlen und Argumenten in der Konsole die Felder Command
und Arguments
.
Wenn Sie Befehle und Argumente in der Befehlszeilenschnittstelle hinzufügen möchten, fügen Sie die Optionen --cmd
und --args
zum Befehl job create
bzw. jobrun submit
hinzu.
Weitere Informationen zum Definieren von Befehlen und Argumenten finden Sie unter Befehle und Argumente für Code Engine-Workloads definieren.
Job mit Umgebungsvariablen erstellen und ausführen
Sie können Umgebungsvariablen als Schlüssel/Wert-Paare definieren und festlegen, die von Ihrem Job bei der Ausführung verwendet werden können.
Umgebungsvariablen können Sie über die Konsole oder die Befehlszeilenschnittstelle beim Erstellen Ihres Jobs oder beim Aktualisieren eines vorhandenen Jobs definieren. Sie können Umgebungsvariablen für Ihre Jobs erstellen, die eine vollständige Konfigurationszuordnung (oder einen vollständigen geheimen Schlüssel) oder einzelne Schlüssel in einer Konfigurationszuordnung (oder einem geheimen Schlüssel) referenzieren.
Weitere Informationen zum Definieren von Umgebungsvariablen finden Sie unter Mit Umgebungsvariablen arbeiten.
Job mit geheimen Schlüsseln und Konfigurationszuordnungen erstellen und ausführen
In Code Engine können Secrets und Configmaps von Ihrem Job mithilfe von Umgebungsvariablen verwendet werden.
Sowohl bei geheimen Schlüsseln als auch bei Konfigurationszuordnungen handelt es sich um Schlüssel/Wert-Paare. Wenn sie Umgebungsvariablen zugeordnet sind, werden die NAME=VALUE
-Beziehungen so konfiguriert, dass der Name der Umgebungsvariablen
dem 'Schlüssel' der einzelnen Einträge in diesen Zuordnungen entspricht und der Wert der Umgebungsvariablen dem 'Wert' des jeweiligen Schlüssels.
Ihr Job kann Umgebungsvariablen verwenden, um eine vollständige Konfigurationszuordnung (oder einen vollständigen geheimen Schlüssel) oder einzelne Schlüssel in einer Konfigurationszuordnung (oder einem geheimen Schlüssel) zu referenzieren.
Weitere Informationen finden Sie unter Geheime Schlüssel mithilfe von Umgebungsvariablen referenzieren und Konfigurationszuordnungen mithilfe von Umgebungsvariablen referenzieren.
Was ist, wenn mein Job unbegrenzt ausgeführt werden soll?
Normalerweise sind Jobs so konzipiert, dass sie einmal ausgeführt und mit einer maximalen Ausführungszeit beendet werden.
Angenommen, Sie möchten einen Datenspeicher eines anderen Anbieters ständig abfragen. Sie können eine Anwendung erstellen. Der App-Port muss jedoch offen bleiben, um HTTP-Anforderungen zu verarbeiten. Wenn Sie HTTP-Anforderungen nicht verarbeiten wollen, können Sie stattdessen einen Job erstellen, der ohne maximale Ausführungszeit und ohne Zeitlimitüberschreitung ausgeführt wird.
Mit Code Enginekönnen Sie die mode
Ihres Jobs auswählen. Verwenden Sie für Jobs, für die eine maximale Ausführungszeit gilt, den Modus task
für Ihre Jobs. Fehlgeschlagene Instanzen werden gemäß dem Grenzwert für Jobwiederholungen
erneut gestartet. Dieser Modus ist das Standardverhalten für Jobs.
Wenn Sie einen Job erstellen möchten, der unbegrenzt ausgeführt werden kann und kein Zeitlimit hat, verwenden Sie den Modus daemon
für Ihre Jobs. Fehlgeschlagene Instanzen werden automatisch unbegrenzt erneut gestartet.
Mit Code Enginebezahlen Sie nur für die Ressourcen, die Sie nutzen. Wenn Ihr Job im Modus daemon
ausgeführt wird, beachten Sie, dass der Job immer ausgeführt wird, bis Sie den Job löschen.
Weitere Informationen finden Sie unter Einen Job erstellen und ausführen, der unbegrenzt ausgeführt wird.
Hinweise zu Jobkontingenten
Wenn Sie mit Anwendungen, Funktionen und Stapeljobs arbeiten, werden diese Ressourcen im Kontext eines Code Engine-Projekts ausgeführt. Ressourcenkontingente werden pro Projekt definiert und Grenzwerte gelten für Anwendungen, Funktionen und Stapeljobs.
Weitere Informationen zu Code Engine-Grenzwerte finden Sie unter Grenzwerte und Kontingente für Code Engine.
Aufräumen nach abgeschlossenen Arbeitsgängen
Aufträge, die abgeschlossen sind, werden nach einer Woche automatisch gelöscht.
Nächste Schritte
Sind Sie nun mit den Schlüsselkonzepten für die Arbeit mit Code Engine-Jobs vertraut und bereit zum Erstellen und Ausführen von Jobs? Siehe
- Erstellen eines Jobs aus Images in einer öffentlichen Registry.
- Job aus Images in IBM Cloud Container Registry.
- Job aus Images in einer privaten Registry erstellen
- Job aus Repository-Quellcode erstellen.
- Job ausführen.
Weitere Informationen zur Arbeit mit Jobs finden Sie unter