【发布时间】:2021-05-14 20:34:57
【问题描述】:
我需要执行为我的应用程序编写的诊断程序。应用程序正在 Kubernetes pod 中运行/部署。我想在 Kubernetes pod 中复制一个诊断可执行 jar 文件并在不停止 pod 的情况下执行它。如何实现?有没有一种特定的方式来使用 Kubernetes pod 环境来运行可执行 jar?
【问题讨论】:
标签: java kubernetes jar executable-jar kubernetes-pod
我需要执行为我的应用程序编写的诊断程序。应用程序正在 Kubernetes pod 中运行/部署。我想在 Kubernetes pod 中复制一个诊断可执行 jar 文件并在不停止 pod 的情况下执行它。如何实现?有没有一种特定的方式来使用 Kubernetes pod 环境来运行可执行 jar?
【问题讨论】:
标签: java kubernetes jar executable-jar kubernetes-pod
你可以试试kubectl cp命令:
来自docs:
将 /tmp/foo_dir 本地目录复制到远程 pod 中的 /tmp/bar_dir 中 默认命名空间
kubectl cp /tmp/foo_dir <some-pod>:/tmp/bar_dir
将 /tmp/foo 本地文件复制到特定远程 pod 中的 /tmp/bar 容器
kubectl cp /tmp/foo <some-pod>:/tmp/bar -c <specific-container>
将 /tmp/foo 本地文件复制到命名空间中远程 pod 中的 /tmp/bar
kubectl cp /tmp/foo <some-namespace>/<some-pod>:/tmp/bar
将 /tmp/foo 从远程 pod 复制到本地 /tmp/bar
kubectl cp <some-namespace>/<some-pod>:/tmp/foo /tmp/bar
在容器内添加可执行文件后,您可以exec 进入 pod 并手动执行文件。
【讨论】:
打开交互式 bash 终端
kubectl exec <pod name> -n <namespace> -c <container name> -it bash
在此之后,找到您的可执行 jar 并运行它。完成后,退出终端。
你可以直接运行它。
kubectl exec <podname> -n <namespace> -c <container name> -- < command to run your jar >
查看这个官方k8s页面https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#exec
【讨论】: