Ich versuche, mehrere Befehle in einem K8s-Cron-Job auszuführen. In den Protokollen wird jedoch nur die Ausgabe des ersten Jobs angezeigt. Ich habe Folgendes:
containers:
- name: myjob
image: postgres
args:
- /bin/sh
- -c
- PGPASSWORD=$(echo $password) psql -h $host -p 5432 -U $username -d $db -c "\copy (select * from blah limit 1) to blah.txt" ; echo bar.txt ; cat bar.txt;
- PGPASSWORD=$(echo $password) psql -h $host -p 5432 -U $username -d $db -c "\copy (select * from foo limit 1) to foo.txt" ; date ; echo foo.txt ; cat foo.txt;
restartPolicy: OnFailure
Ich sehe nur die Ausgabe des ersten Befehls. Ich möchte mehrere Befehle angeben und diese nacheinander ausführen können.
Antwort1
Verbinden Sie sie einfach in einer einzigen Zeile -c
mit &&
dem „oder“ ;
-Operator .
Die vollständige Antwort anzeigenHier
Antwort2
Es können einfach zwei Befehle durch einen ausgeführt werdenStandardverfahren im Pod.
command: ["/bin/sh","-c"]
args: ["command one; command two && command three"]
Jedoch,Ich bezweifle, dass es eine gute Idee istund es sollte als letzte Hoffnung genutzt werden. Containersind für die Ausführung nur eines Prozesses ausgelegtund CronJobs verwendenPod-Spezifikation.
Daher kann ich Folgendes empfehlen: Auf die Reihenfolge kommt es an.
- Führen Sie zwei separate CronJobs aus, wenn Ihre Aufgaben völlig unabhängig sind.
- Führen Sie zwei separate Container im CronJob aus. Der CronJob schlägt fehl, wenn einer Ihrer Container fehlschlägt.
- Verwenden
initContainers
um vorher etwas Ordnung oder Vorbereitung zu schaffen.