【问题标题】:Can we run an executable jar file inside an already running Kubernetes pod?我们可以在已经运行的 Kubernetes pod 中运行可执行的 jar 文件吗?
【发布时间】:2021-05-14 20:34:57
【问题描述】:

我需要执行为我的应用程序编写的诊断程序。应用程序正在 Kubernetes pod 中运行/部署。我想在 Kubernetes pod 中复制一个诊断可执行 jar 文件并在不停止 pod 的情况下执行它。如何实现?有没有一种特定的方式来使用 Kubernetes pod 环境来运行可执行 jar?

【问题讨论】:

    标签: java kubernetes jar executable-jar kubernetes-pod


    【解决方案1】:

    你可以试试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 并手动执行文件。

    【讨论】:

    • 我想问这个问题的意图是是否可以在 Kubernetes pod 中运行可执行 jar 文件,并且它真的可以使用内部环境吗?如果是,那么是否有特定的方法可以做到这一点?在 Kubernetes pod 中复制文件在这里不是问题。所以,我稍微修改一下这个问题。
    • 在容器中添加可执行文件后,您可以执行到 pod 中并手动执行文件。
    【解决方案2】:

    打开交互式 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-07
      • 2022-11-11
      • 1970-01-01
      • 2011-06-03
      • 2019-04-07
      • 2016-12-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多