Aufgaben ausführen

Sie können kurzlebige Workflows ausführen, indem Sie sie als Aufgaben in Kf ausführen. Aufgaben werden unter „Apps” ausgeführt. Das bedeutet, dass jeder Aufgabe eine App zugeordnet sein muss. Bei jeder Aufgabenausführung werden die Build-Artefakte der übergeordneten Anwendung verwendet. Da Aufgaben kurzlebig sind, wird die Anwendung nicht als Anwendungen mit langer Laufzeit bereitgestellt und es sollten keine Routen für die App oder die Aufgabe erstellt werden.

App zum Ausführen von Aufgaben per Push übertragen

Rufen Sie das Verzeichnis des App-Manifests oder -Quellcodes auf und erstellen Sie eine App zum Ausführen von Aufgaben mit dem Befehl kf push APP_NAME --task. Das Flag --task gibt an, dass die Anwendung für die Ausführung von Aufgaben verwendet werden soll. Daher werden keine Routen in der App erstellt und nicht als lang andauernde Anwendung bereitgestellt.

$ kf push helloworld --task

Prüfen Sie, ob keine App-Instanzen oder Routen erstellt wurden, indem Sie die Anwendung auflisten.

$ kf apps
Listing Apps in Space: test-space
Name                     Instances  Memory  Disk  CPU   URLs
helloworld               stopped    1Gi     1Gi   100m  <nil>

Aufgabe in App ausführen

Wenn Sie eine Aufgabe in der Anwendung ausführen, können Sie optional mit dem Flag --command einen Startbefehl angeben. Wenn kein Startbefehl angegeben ist, wird der in der App angegebene Startbefehl verwendet. Wenn kein Startbefehl für die App angegeben ist, wird die CMD-Konfiguration des Container-Images abgerufen. Es muss ein Startbefehl vorhanden sein, damit die Aufgabe ausgeführt werden kann.

$ kf run-task helloworld --command "printenv"
Task helloworld-gd8dv is submitted successfully for execution.

Der Name der Aufgabe wird automatisch im Kubernetes API-Server generiert. Sie haben das Präfix „App” und sind durch einen beliebigen String gefüllt. Der Aufgabenname ist eine eindeutige Kennung für Aufgaben innerhalb desselben Clusters.

Limits für Aufgabenressourcen angeben

Ressourcenlimits (z. B. CPU-Kerne/Speicherlimit/Laufwerkkontingent) können in der Anwendung (während kf push) oder während des kf run-task-Befehls festgelegt werden. Die im Befehl kf run-task angegebenen Limits haben Vorrang vor den für die Anwendung angegebenen Limits.

Zum Angeben von Ressourcenlimits in einer App können Sie die Flags --cpu-cores, --memory-limit und --disk-quota im Befehl kf push verwenden.

$ kf push helloworld --command "printenv" --cpu-cores=0.5 --memory-limit=2G --disk-quota=5G --task

Wenn Sie diese Limits in der Anwendung überschreiben möchten, können Sie im Befehl kf run-task die Flags --cpu-cores, --memory-limit und --disk-quota verwenden.

$ kf run-task helloworld --command "printenv" --cpu-cores=0.5 --memory-limit=2G --disk-quota=5G

Benutzerdefinierten Anzeigenamen für eine Aufgabe festlegen

Optional können Sie das Flag --name verwenden, um einen benutzerdefinierten Anzeigenamen für eine Aufgabe anzugeben, um die Identifizierung/Gruppierung zu erleichtern.

$ kf run-task helloworld --command "printenv" --name foo
Task helloworld-6swct is submitted successfully for execution.

$ kf tasks helloworld
Listing Tasks in Space: test space
Name              ID  DisplayName        Age    Duration  Succeeded  Reason
helloworld-6swct  3   foo                1m     21s       True       <nil>

Aufgaben verwalten

Sehen Sie sich alle Aufgaben einer App mit dem Befehl kf tasks APP_NAME an.

$ kf tasks helloworld
Listing Tasks in Space: test space
Name              ID  DisplayName        Age    Duration  Succeeded  Reason
helloworld-gd8dv  1   helloworld-gd8dv   1m     21s       True       <nil>

Aufgabe abbrechen

Mit dem Befehl kf terminate-task eine aktive Aufgabe abbrechen.

Brechen Sie eine Aufgabe nach Aufgabenname ab.

$ kf terminate-task helloworld-6w6mz
Task "helloworld-6w6mz" is successfully submitted for termination

Oder brechen Sie eine Aufgabe über APP_NAME und Aufgaben-ID ab.

$ kf terminate-task helloworld 2
Task "helloworld-6w6mz" is successfully submitted for termination
  • Hinweis: Sie können nur Aufgaben abbrechen, die ausstehend/ausgeführt werden, abgeschlossene Aufgaben können jedoch nicht storniert werden.

Abgebrochene Aufgaben haben den Status PipelineRunCancelled.

$ kf tasks helloworld
Listing Tasks in Space: test space
Name              ID  DisplayName        Age    Duration  Succeeded  Reason
helloworld-gd8dv  1   helloworld-gd8dv   1m     21s       True       <nil>
helloworld-6w6mz  2   helloworld-6w6mz   38s    11s       False      PipelineRunCancelled

Aufgabenlogs ansehen

Logs einer Aufgabe mit dem Befehl kf logs APP_NAME --task aufrufen.

$ kf logs helloworld --task