0

我正在为应用程序编写一个小备份程序。这将在我的 k8s 集群中作为 CronJob 运行。在某一时刻,它应该在另一个 pod 内的数据库上触发 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构建的

4

2 回答 2

0

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

于 2019-11-13T18:23:37.080 回答
0

When kubectl exec (or oc exec command) returns non-zero exit code, you should manually connect to the pod, and execute the same command directly, to inspect what's wrong:

[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 $? 
于 2020-02-20T10:03:47.250 回答