So führen Sie mehrere Befehle im Kubernetes-Cron-Job aus

So führen Sie mehrere Befehle im Kubernetes-Cron-Job aus

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 -cmit &&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.
  • VerwendeninitContainersum vorher etwas Ordnung oder Vorbereitung zu schaffen.

verwandte Informationen