Job ausführen
Nach der Erstellung des Jobs können Sie einen Job auf der Basis dieser Definition ausführen oder den Job mit Eigenschaften zum Überschreiben ausführen. Den Job können Sie in der Konsole oder in der Befehlszeilenschnittstelle ausführen.
Bei jeder Ausführung Ihres Jobs wird die neueste Version Ihres referenzierten Container-Image für die Jobausführung verwendet, sofern kein Tag für das Image angegeben ist. Wenn ein Tag für das Image angegeben wird, wird das mit Tags versehene Image für die Jobausführung verwendet.
Übergebene Stapeljobs werden, sofern möglich, parallel ausgeführt. Wenn die Anzahl oder Größe der eingereichten Aufträge die konfigurierten Quotengrenzen überschreitet, z. B. die maximale Anzahl der laufenden Instanzen, werden die Code Engine Aufträge in eine Warteschlange gestellt und ihre Ausführung verzögert, bis genügend Aufträge abgeschlossen sind. Weitere Informationen zu Batch-Aufträgen finden Sie unter Arbeitsbelastung durch Batch-Aufträge. Weitere Informationen zu Begrenzungen für Jobs einschließlich Speicher und CPU finden Sie unter Grenzwerte und Kontingente für Code Engine.
Durch Abonnements erstellte Job-Läufe werden nach zehn Minuten gelöscht. Weitere Informationen zu Subskriptionen finden Sie unter Erste Schritte mit Subskriptionen.
Aufträge, die abgeschlossen sind, werden nach einer Woche automatisch gelöscht.
Job über die Konsole ausführen
Wenn Sie einen Job erstellen, können Sie ihn sofort ausführen. Sie können einen Job jedoch jederzeit übergeben und erneut übergeben. Auch einen zuvor erstellten Job können Sie übergeben oder erneut übergeben.
-
Navigieren Sie zur Jobseite.
- Klicken Sie auf der Seite „ Code Engine-Projekte“ auf den Namen Ihres Projekts.
- Klicken Sie auf „ Jobs “ und anschließend auf die Registerkarte „ Jobs “.
- Klicken Sie auf den Namen des Auftrags, den Sie ausführen möchten.
-
Klicken Sie auf Job übergeben, um das Dialogfenster 'Job übergeben' zu öffnen. Überprüfen Sie die Standardkonfigurationswerte, zum Beispiel Instanzen, CPU, Speicher, Anzahl der Jobversuche und Jobzeitlimit; Sie können diese Werte auch optional ändern. Weitere Informationen zu diesen Optionen finden Sie unter Optionen für Erstellung und Ausführung von Jobs.
-
Klicken Sie auf Job übergeben, um den Job auszuführen. Der Status der Instanzen des Jobs wird vom System auf der Jobdetailseite angezeigt.
-
Wenn einer der Instanzen Ihres Auftrags nicht ausgeführt werden kann, beheben Sie den Fehler und klicken Sie dann auf "Fehlgeschlagene Indizes erneut ausführen ", um den Auftrag für die fehlgeschlagenen Indizes erneut auszuführen. Überprüfen Sie im Bereich „Auftrag übermitteln“ die Konfigurationswerte und ändern Sie diese gegebenenfalls. Im Abschnitt „Array-Indizes“ werden automatisch die Indizes der fehlgeschlagenen Jobausführungen aufgelistet. Nachdem Sie Konfigurationswerte überprüft und optional geändert haben, klicken Sie auf Job übergeben, um Ihren Job auszuführen.
Informationen zur Behebung häufiger Fehler bei Jobausführungsindizes finden Sie unter „ Gründe für das Scheitern von Jobausführungsindizes “.
Sie können auch vorhandene Jobläufe erneut ausführen. Um eine bestimmte Jobausführung erneut auszuführen, klicken Sie auf die Registerkarte Jobausführungen und anschließend auf den Namen der Jobausführung, mit der Sie arbeiten wollen. Klicken Sie auf Erneut ausführen, um diese Jobausführung erneut auszuführen.
Sie können Jobprotokolle anzeigen, nachdem Sie Protokollierungsfunktionen hinzugefügt haben. Weitere Informationen finden Sie unter Protokolle anzeigen.
Die Umgebungsvariable JOB_INDEX wird automatisch in jede Instanz des Jobs eingefügt, wenn der Job ausgeführt wird. Weitere Informationen zu Umgebungsvariablen, die von Code Engine festgelegt werden, finden Sie unter Ich sehe Konfigurationszuordnungen, die ich nicht erstellt habe. Kann ich sie löschen?.
Job über die Befehlszeilenschnittstelle ausführen
Vorbereitende Schritte
- Konfigurieren Sie die Code Engine-Umgebung.
- Erstellen Sie einen Job.
Verwenden Sie zum Ausführen eines Jobs in der Befehlszeilenschnittstelle den Befehl jobrun submit. Eine umfassende Liste der Optionen finden Sie im Abschnitt über den Befehl ibmcloud ce jobrun submit.
Mit der CLI können Sie einen Job auf der Grundlage einer Jobkonfiguration ausführen oder einen Job ohne vorherige Erstellung einer Jobkonfiguration ausführen.
Ausführen eines Jobs mit der CLI auf der Grundlage einer Jobkonfiguration
Wenn Sie eine Jobkonfiguration erstellen, können Sie Ihren Job leichter mehrfach ausführen.
Der folgende jobrun submit Befehl erstellt beispielsweise fünf neue Instanzen, um das Container-Image auszuführen, das in der definierten myjob-Jobkonfiguration angegeben ist. Um auf eine definierte
Job-Konfiguration zu verweisen, verwenden Sie die Option --job. Während die Option --name nicht erforderlich ist, wenn die Option --job angegeben ist, gibt der folgende Beispielbefehl die Option --name an, um einen Namen für diesen Joblauf anzugeben. Für Jobs ist der Standardwert für die cpu 1 und der Standardwert für denmemory 4G. Die Ressourcengrenzwerte und -anforderungen werden pro
Instanz angewendet, sodass jeder Instanz 4 GB Hauptspeicher und 1 vCPU zur Verfügung stehen. Dieser Job ordnet 5 * 4 G = 20 GB Speicher und 5 * 1 vCPU = 5 vCPUs zu.
ibmcloud ce jobrun submit --name testjobrun --job myjob --array-indices "1 - 5"
Die folgende Tabelle vermittelt Ihnen einen Überblick über die Optionen, die in diesem Beispiel beim Befehl jobrun submit verwendet werden. Weitere Informationen zum Befehl und den zugehörigen Optionen finden
Sie im Abschnitt über den Befehl ibmcloud ce jobrun submit.
| Option | Beschreibung |
|---|---|
--name |
Der Name dieser Jobausführung. Die Werte für
|
--job |
Der Name des Jobs, der ausgeführt werden soll. Dieser Wert ist erforderlich, wenn Sie die Werte --name und --image nicht angeben. |
--array-indices |
Gibt die Indizes der Instanzen an, die zur Ausführung des Jobs verwendet werden. Geben Sie die Liste oder den Bereich der Indizes an, die durch Bindestriche (-) oder Kommas (,) getrennt sind; zum Beispiel 1,3,6,9 oder 1-5,7-8,10.
Das Maximum ist 999999. Dieser Wert ist optional. Der Standardwert ist 0. |
Die Umgebungsvariable JOB_INDEX wird automatisch in jede Instanz des Jobs eingefügt, wenn der Job ausgeführt wird. Weitere Informationen zu Umgebungsvariablen, die von Code Engine festgelegt werden, finden Sie unter Ich sehe Konfigurationszuordnungen, die ich nicht erstellt habe. Kann ich sie löschen?.
Ausführen eines Jobs mit der CLI ohne vorherige Erstellung einer Jobkonfiguration
Mit der Befehlszeilenschnittstelle können Sie einen Joblauf übermitteln, ohne zuvor eine Jobkonfiguration zu erstellen. Für die Befehle jobrun submit und jobrun resubmit können Sie dieselben Konfigurationsoptionen
angeben, die auch für den Befehl job create verfügbar sind.
Der folgende ibmcloud ce jobrun submit-Befehl sendet beispielsweise einen Joblauf, um das us.icr.io/mynamespace/myhello_bld-Image
unter Verwendung der myregistry-Zugriffsinformationen zu referenzieren. Da dieser Joblauf nicht auf eine definierte Jobkonfiguration verweist, müssen Sie Werte für die Optionen --name und image angeben.
Verwenden Sie --name, um den Namen dieses Auftragslaufs anzugeben, und --image, um den Namen des Bildes anzugeben, das für diesen Auftragslauf verwendet wird. Mit der Option --array-indices werden fünf
neue Instanzen für die Ausführung des Container-Images erstellt. Für Jobläufe ist der Standardwert für die cpu 1 und der Standardwert für denmemory 4G. Die Ressourcengrenzwerte und -anforderungen
werden pro Instanz angewendet, sodass jeder Instanz 4 GB Hauptspeicher und 1 vCPU zur Verfügung stehen. Dieser Joblauf weist 5 * 4 G = 20 G Speicher und 5 * 1 vCPU = 5 vCPUs zu.
ibmcloud ce jobrun submit --name myhellojob-jobruna --image us.icr.io/mynamespace/myhello_bld --registry-secret myregistry --array-indices "1 - 5"
Führen Sie den Befehl jobrun get -n myhellojob-jobruna aus, um den Jobausführungsstatus zu überprüfen.
Beispielausgabe
[...]
Name: myhellojob-jobruna
ID: abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
Project Name: myproject
Project ID: 01234567-abcd-abcd-abcd-abcdabcd1111
Age: 3m6s
Created: 2021-06-04T11:56:22-04:00
Image: us.icr.io/mynamespace/myhello_bld
Resource Allocation:
CPU: 1
Ephemeral Storage: 400M
Memory: 4G
Registry Secrets:
myregistry
Runtime:
Mode: task
Array Indices: 1 - 5
Array Size: 5
JOP_ARRAY_SIZE Value: 5
Max Execution Time: 7200
Retry Limit: 3
Status:
Completed: 9s
Instance Statuses:
Succeeded: 5
Conditions:
Type Status Last Probe Last Transition
Pending True 16s 16s
Running True 13s 13s
Complete True 9s 9s
Events:
Type Reason Age Source Messages
Normal Updated 11s (x8 over 18s) batch-job-controller Updated JobRun "myhellojob-jobruna"
Normal Completed 11s batch-job-controller JobRun completed successfully
Instances:
Name Running Status Restarts Age
myhellojob-jobruna-1-0 0/1 Succeeded 0 18s
myhellojob-jobruna-2-0 0/1 Succeeded 0 18s
myhellojob-jobruna-3-0 0/1 Succeeded 0 18s
myhellojob-jobruna-4-0 0/1 Succeeded 0 18s
myhellojob-jobruna-5-0 0/1 Succeeded 0 18s
Mit der CLI übermittelte (oder erneut übermittelte) Job-Läufe, die nicht auf eine definierte Job-Konfiguration verweisen, können von der Konsole aus nicht angezeigt werden.
Job über die Befehlszeilenschnittstelle erneut übergeben
Wenn Sie einen Job auf der Basis der Konfiguration einer vorherigen Jobausführung erneut übergeben möchten, verwenden Sie den Befehl jobrun resubmit. Für diesen Befehl ist der Name der vorherigen Jobausführung erforderlich;
weitere optionale Argumente sind möglich. Eine umfassende Liste der Optionen finden Sie im Abschnitt über den Befehl ibmcloud ce jobrun resubmit.
Beispiel: Mit dem folgenden Befehl jobrun resubmit wird die Jobausführung testjobrun erneut übergeben.
ibmcloud ce jobrun resubmit --jobrun testjobrun
Beispielausgabe
Getting job run 'testjobrun'...
Getting job 'myjob'...
Rerunning job run 'myjob-jobrun-fji48'...
Run 'ibmcloud ce jobrun get -n myjob-jobrun-fji48' to check the job run status.
Der folgende Befehl jobrun resubmit führt beispielsweise den Joblauf myhellojob-jobruna erneut aus, der ohne vorherige Erstellung der Jobkonfiguration ausgeführt wurde. Da der referenzierte Joblauf
keine zugehörige Jobkonfiguration hat, müssen Sie die Option --name angeben, um einen Namen für diesen Joblauf festzulegen.
ibmcloud ce jobrun resubmit --jobrun myhellojob-jobruna --name myhellojob-jobrunb
Führen Sie den Befehl jobrun get -n myhellojob-jobrunb aus, um den Jobausführungsstatus zu überprüfen.
Beispielausgabe
Getting jobrun 'myhellojob-jobrunb'...
[...]
Name: myhellojob-jobrunb
ID: abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
Project Name: myproject
Project ID: 01234567-abcd-abcd-abcd-abcdabcd1111
Age: 3m6s
Created: 2021-06-04T11:56:22-04:00
Image: us.icr.io/mynamespace/myhello_bld
Resource Allocation:
CPU: 1
Ephemeral Storage: 400M
Memory: 4G
Registry Secrets:
myregistry
Runtime:
Mode: task
Array Indices: 1 - 5
Array Size: 5
JOP_ARRAY_SIZE Value: 5
Max Execution Time: 7200
Retry Limit: 3
Status:
Completed: 91s
Instance Statuses:
Succeeded: 5
Conditions:
Type Status Last Probe Last Transition
Pending True 96s 96s
Running True 92s 92s
Complete True 91s 91s
Events:
Type Reason Age Source Messages
Normal Updated 93s (x7 over 97s) batch-job-controller Updated JobRun "myhellojob-jobrunb"
Normal Completed 93s batch-job-controller JobRun completed successfully
Instances:
Name Running Status Restarts Age
myhellojob-jobrunb-1-0 0/1 Succeeded 0 97s
myhellojob-jobrunb-2-0 0/1 Succeeded 0 97s
myhellojob-jobrunb-3-0 0/1 Succeeded 0 97s
myhellojob-jobrunb-4-0 0/1 Succeeded 0 97s
myhellojob-jobrunb-5-0 0/1 Succeeded 0 97s
Mit der CLI übermittelte (oder erneut übermittelte) Job-Läufe, die nicht auf eine definierte Job-Konfiguration verweisen, können von der Konsole aus nicht angezeigt werden.
Nächste Schritte
-
Wenn Sie Details zu Ihrem Job und zu Jobausführungen anzeigen möchten, nachdem Sie Ihren Job ausgeführt haben, finden Sie weitere Informationen unter Auf Jobdetails zugreifen.
-
Nachdem Ihr Job erstellt wurde, sollten Sie erwägen, Ihre Jobs ereignisgesteuert zu konfigurieren. Mithilfe von Ereignissubskriptionen können Sie Ihre Jobs mittels periodischer Zeitpläne auslösen oder Ihren Job so einstellen, dass er auf Ereignisse wie Dateiuploads reagiert.
-
Sie können Ihren Job aktualisieren und den zugehörigen referenzierten Code in irgendeiner der folgenden Arten verwenden, unabhängig davon, wie Sie Ihren Job erstellt oder zuvor aktualisiert haben.
-
Wenn Sie über ein Container-Image gemäß dem Standard der Open Container Initiative(OCI) verfügen, müssen Sie beim Erstellen (oder Aktualisieren) Ihres Jobs lediglich einen Verweis auf das Image angeben, der auf den Speicherort Ihrer Container-Registry verweist. Sie können Ihren Job anhand von Images aus einem öffentlichen oder privaten Registry erstellen (oder aktualisieren) und anschließend während der Ausführung Ihres Jobs auf das referenzierte Image zugreifen.
Wenn Sie Ihren Job mit dem Befehl
job createerstellt und die Option--build-sourceangegeben haben, um das Container-Image aus einer lokalen Quelle oder einer Repository-Quelle zu erstellen, und Sie Ihren Job so ändern möchten, dass er auf ein anderes Container-Image verweist, müssen Sie zuerst die Zuordnung des Builds aus Ihrem Job entfernen. Führen Sie beispielsweiseibmcloud ce job update -n JOB_NAME --build-clearaus. Nachdem Sie die Zuordnung des Builds zu Ihrem Job entfernt haben, können Sie den Job aktualisieren, sodass er auf ein anderes Image verweist. -
Wenn Sie mit Quellcode beginnen, der sich in einem Git-Repository befindet, können Sie Code Engine überlassen, das Image aus Ihrer Quelle zu erstellen und den Job mit einer einzelnen Operation zu erstellen (oder zu aktualisieren). 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 die Erstellung Ihres Image haben möchten, können Sie das Image mit Code Engine generieren, bevor Sie Ihren Job erstellen (oder aktualisieren) und ausführen.
-
Wenn Sie mit Quellcode beginnen, der sich auf einer lokalen Workstation befindet, können Sie Code Engine das Image aus Ihrer Quelle generieren und den Job mit einem einzelnen CLI-Befehl erstellen lassen. 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 die Erstellung Ihres Image haben möchten, können Sie das Image mit Code Engine generieren, bevor Sie Ihren Job erstellen (oder aktualisieren) und ausführen.
Sie können beispielsweise festlegen, dass Code Engine den Build Ihrer lokalen Quelle bearbeiten soll, wenn Sie die Entwicklung Ihrer Quelle für den Job weiterentwickeln. Nachdem das Image fertiggestellt wurde, können Sie den Job aktualisieren, um auf das gewünschte Image zu verweisen. Sie können diesen Prozess nach Bedarf wiederholen.
Wenn Sie Ihren aktualisierten Job ausführen, wird die neueste Version Ihres referenzierten Container-Image für die Jobausführung verwendet, sofern kein Tag für das Image angegeben ist. Wenn ein Tag für das Image angegeben wird, wird das mit Tags versehene Image für die Jobausführung verwendet.
-
Benötigen Sie weitere Codebeispiele? Schaut euch die Beispiele im Repository „ IBM Cloud Code Engine “ unter GitHub an.