[英]Kubectl Java client returns exit code 3 when using exec
我正在为应用程序编写一个小备份程序。 这将在我的 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构建的
因此,经过一番阅读,我发现出了什么问题。 而不是写 --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 $?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.