Job aktualisieren

Sie können Änderungen an einem definierten Job vornehmen und den aktualisierten Job über die Konsole oder die CLI ausführen. Zu den Änderungen an Ihrem Job kann die Aktualisierung des Code-Container-Images, der Code-Argumente oder -Befehle, der Ressourcen der Laufzeitinstanz oder der Umgebungsvariablen gehören.

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 Begrenzungen für Jobs einschließlich Speicher und CPU finden Sie unter Grenzwerte und Kontingente für Code Engine.

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 create erstellt und die Option --build-source angegeben haben, um das Container-Image aus der lokalen Quelle oder der 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 beispielsweise ibmcloud ce job update -n JOB_NAME --build-clear aus. 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.

Aktualisieren eines Jobs über die Konsole

Wenn ein Job bereit ist, können Sie den Job aktualisieren. Aktualisieren wir den zuvor erstellten Job myjob, um die Ausgabe der Begrüßungs- und Umgebungsvariablen zu ändern, indem wir eine Umgebungsvariable aktualisieren. Wenn eine Anfrage an diesen Beispieljob „ icr.io/codeengine/helloworld “ gesendet wird, liest der Job die Umgebungsvariable „ TARGET “ aus und gibt „ "Hello ${TARGET}!" “ aus. Wenn diese Umgebungsvariable leer ist, wird "Hello World!" zurückgegeben. Weitere Informationen über den Code, der für dieses Beispiel verwendet wird, finden Sie unter helloworld.

  1. Navigieren Sie zur Jobseite.

    1. Klicken Sie auf der Seite „ Code Engine-Projekte“ auf den Namen Ihres Projekts.
    2. Klicken Sie auf „ Jobs “ und anschließend auf die Registerkarte „ Jobs “.
    3. Klicken Sie auf den Namen des Auftrags, den Sie aktualisieren möchten.
  2. Klicken Sie auf der Registerkarte Konfiguration > Umgebungsvariablen auf Umgebungsvariable hinzufügen. Fügen Sie eine wörtliche Umgebungsvariable mit dem Namen TARGET und dem Wert Sunshine hinzu. icr.io/codeengine/helloworld gibt die Nachricht Hello <value_of_TARGET>!> aus.

  3. Klicken Sie auf „Hinzufügen“, um Ihre Umgebungsvariable hinzuzufügen.

  4. Klicken Sie auf Bereitstellen.

  5. Klicken Sie auf Job übergeben.

  6. Ändern Sie diesmal im Fenster " Job übergeben" den CPU-Wert auf eine der gültigen CPU-Auswahlen für den angegebenen Speicher. Beachten Sie, dass Sie gültige Speicher- und CPU-Kombinationen verwenden müssen. Klicken Sie erneut auf Job einreichen, um diesen Job auszuführen. Das System zeigt den Status Ihres Jobs auf der Seite Jobdetails an. Beachten Sie den aktualisierten CPU-Wert im Abschnitt Configuration in den Jobdetails.

  7. Wenn Sie für diesen Job Jobprotokolle über die Konsole anzeigen, lautet die Ausgabe des aktualisierten Jobs Hello Sunshine!.

Aktualisieren eines Jobs mit der CLI

Mit der Befehlszeilenschnittstelle können Sie eine bestehende Jobkonfiguration aktualisieren oder Ihre Änderungen bei einem neuen Joblauf angeben.

Aktualisieren einer Jobkonfiguration mit der CLI

Sie können eine bestehende Jobkonfiguration mit dem Befehl ibmcloud ce job update aktualisieren.

  1. Verwenden Sie den Befehl job update, um den Job myjob zu aktualisieren und ein anderes Bild zu verwenden.

    ibmcloud ce job update --name myjob --image icr.io/codeengine/testjob
    

    Führen Sie den Befehl ibmcloud ce job get -n myjobaus, um die Details des aktualisierten Jobs anzuzeigen.

    Beispielausgabe

    Name:          myjob
    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
    Last Job Run:
        Name:     myjob-jobrun-abcde
        Age:      32d
        Created:  2021-08-06T13:50:02-04:00
    Image:                icr.io/codeengine/testjob
    Resource Allocation:
        CPU:     1
        Memory:  4G
    Runtime:
        Mode:                  task
        Array Indices:         0
        Array Size:            1
        Max Execution Time:    7200
        Retry Limit:           3
    [...]
    
  2. Führen Sie den Befehl ibmcloud ce jobrun submit aus, um einen Job auszuführen, der auf diese aktualisierte Jobkonfiguration verweist. Für den Befehl jobrun submit verwenden Sie die Option --job, um auf eine definierte Job-Konfiguration zu verweisen. 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.

    ibmcloud ce jobrun submit --name myjobrun1 --job myjob
    
  3. Führen Sie ibmcloud ce jobrun get -n myjobrun1 aus, um Details zu diesem Joblauf anzuzeigen. Beachten Sie, dass das referenzierte Image icr.io/codeengine/testjob ist, das auf der aktualisierten Jobkonfiguration basiert.

    Beispielausgabe

    Getting jobrun 'myjobrun1'...
    Getting instances of jobrun 'myjobrun1'...
    Getting events of jobrun 'myjobrun1'...
    [...]
    Name:          myjobrun1
    ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
    Project Name:  myproject
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           3m6s
    Created:       2021-06-15T11:56:22-04:00
    Job Ref:              myjob
    Image:                icr.io/codeengine/testjob
    Resource Allocation:
        CPU:                1
        Ephemeral Storage:  4G
        Memory:             4G
    Runtime:
        Mode:                  task
        Array Indices:         0
        Array Size:            1
        JOP_ARRAY_SIZE Value:  1
        Max Execution Time:    7200
        Retry Limit:           3
    Status:
        Completed:          11s
        Instance Statuses:
            Succeeded:  1
        Conditions:
            Type      Status  Last Probe  Last Transition
        Pending   True    15s         15s
        Running   True    11s         11s
        Complete  True    11s         11s
    Events:
        Type    Reason     Age                Source                Messages
        Normal  Updated    16s (x3 over 20s)  batch-job-controller  Updated JobRun "myjobrun1"
        Normal  Completed  16s                batch-job-controller  JobRun completed successfully
    Instances:
        Name           Running  Status     Restarts  Age
        myjobrun1-0-0  0/1      Succeeded  0         20s
    

Aktualisieren eines Joblaufs mit der CLI

Sie können Änderungen für einen Joblauf mit dem Befehl ibmcloud ce jobrun resubmit angeben. Mit dem Befehl jobrun submit wird ein Joblauf, der sich auf einen früheren Joblauf bezieht, erneut gesendet.

  1. Verwenden Sie den Befehl jobrun resubmit, um den Joblauf myjobrun1 erneut zu übertragen und die Array-Indizes von0 auf 1-4 zu ändern. Während die Option --name für den Befehl jobrun resubmit nicht erforderlich ist, gibt der folgende Beispielbefehl die Option --name an, um einen Namen für diesen Joblauf anzugeben.

    ibmcloud ce jobrun resubmit -jobrun myjobrun1 --array-indices "1-4" --name myjobrunresubmit
    
  2. Führen Sie den Befehl ibmcloud ce jobrun get -n myjobrunresubmit aus, um die Details des aktualisierten Joblaufs anzuzeigen. Beachten Sie, dass der Wert der Array-Indizes für diesen Joblauf aktualisiert wird.

    Beispielausgabe

    Getting jobrun 'myjobrunresubmit'...
    Getting instances of jobrun 'myjobrunresubmit'...
    Getting events of jobrun 'myjobrunresubmit'...
    [...]
    Name:          myjobrunresubmit2
    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
    Job Ref:              myjob
    Image:                icr.io/codeengine/testjob
    Resource Allocation:
        CPU:                1
        Ephemeral Storage:  4G
        Memory:             4G
    Runtime:
        Mode:                  task
        Array Indices:         1-4
        Array Size:            4
        JOP_ARRAY_SIZE Value:  4
        Max Execution Time:    7200
        Retry Limit:           3
    Status:
        Completed:          34s
        Instance Statuses:
            Succeeded:  4
        Conditions:
            Type      Status  Last Probe  Last Transition
        Pending   True    38s         38s
        Running   True    36s         36s
        Complete  True    34s         34s
    Events:
        Type    Reason     Age                Source                Messages
        Normal  Updated    36s (x7 over 40s)  batch-job-controller  Updated JobRun "myjobrunresubmit"
        Normal  Completed  36s                batch-job-controller  JobRun completed successfully
    Instances:
        Name                  Running  Status     Restarts  Age
        myjobrunresubmit-1-0  0/1      Succeeded  0         40s
        myjobrunresubmit-2-0  0/1      Succeeded  0         40s
        myjobrunresubmit-3-0  0/1      Succeeded  0         40s
        myjobrunresubmit-4-0  0/1      Succeeded  0         40s
    

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.