如何在 kubernetes cron 作业中运行多个命令

如何在 kubernetes cron 作业中运行多个命令

我正在尝试在 K8s cron 作业中运行多个命令。但是,日志中仅显示第一个作业输出。我有这个:

          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

我只看到第一个命令的输出。我希望能够指定多个命令并一一运行它们。

答案1

-c只需在with&&;运算符之后将它们连接在一行中

查看完整答案这里

答案2

只需通过 a 运行两个命令Pod 中的标准过程。

command: ["/bin/sh","-c"]
args: ["command one; command two && command three"]

然而,我怀疑这是一个好主意它应该被用作最后的希望。集装箱被设计为仅运行一个进程和 CronJobs 使用吊舱规格

因此,我可以推荐以下内容。顺序很重要。

  • 如果您的任务完全独立,则运行两个单独的 CronJobs。
  • 在 CronJob 中运行两个单独的容器。如果您的容器之一失败,CronJob 将失败。
  • 使用initContainers达到某种秩序或之前的准备。

相关内容