使用exec

我正在为应用程序编写一些备份程序。这将在我的k8s集群中作为CronJob运行。一方面,它应该在另一个容器内的数据库上触发mysql转储。

我的代码:

Exec exec = new Exec();
Process process = exec.exec(
    "default","database-pod",new String[]{"sh","-c",""mysqldump -u {{user}} --p={{password}} schema > dbdump.sql",false,tty
);
process.waitFor();
process.destroy();
int exitvalue = process.exitvalue();

process.exitvalue()始终包含3 +创建了mysql转储文件,但不包含任何sql语句。 有人知道我在做什么错吗?

我的备份程序的基本映像是gcr.io/distroless/java:11(如果有帮助的话),并且是使用Jib

构建的
tombcat 回答:使用exec

因此,经过一番阅读后,我发现了出了什么问题。而不是写--p我应该一直使用--password

,

kubectl exec(或oc exec命令)返回非零退出代码时,您应该手动连接到Pod,并直接执行相同的命令,以检查错误之处:

[my-host]$ kubectl exec ${pod-id} -n ${namespace} bash -ti
[root@my-pod]# command...
# print command exit code (should be the same as before)
[root@my-pod]# echo $? 
本文链接:https://www.f2er.com/3109678.html

大家都在问