簡體   English   中英

Kubectl Java 客戶端使用 exec 時返回退出代碼 3

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM