Estou tentando executar vários comandos em um cron job do K8s. No entanto, apenas a saída dos primeiros trabalhos é exibida nos logs. Eu tenho isto:
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
Estou vendo apenas a saída do primeiro comando. Gostaria de poder especificar vários comandos e executá-los um por um.
Responder1
basta juntá-los em uma única linha após -c
o operador &&
ou;
Veja a resposta completaaqui
Responder2
Só pode executar dois comandos por umprocedimento padrão no Pod.
command: ["/bin/sh","-c"]
args: ["command one; command two && command three"]
No entanto,Duvido que seja uma boa ideiae deve ser usado como última esperança. Containerssão projetados para executar apenas um processoe CronJobs usamEspecificação do pod.
Portanto, posso recomendar as seguintes coisas. A ordem é importante.
- Execute dois CronJobs separados se suas tarefas forem completamente independentes.
- Execute dois contêineres separados no CronJob. O CronJob falhará se um dos seus contêineres falhar.
- Usar
initContainers
para conseguir alguma ordem ou preparação antes.