I need to execute a diagnostic program written for my application. The application is running/deployed in a Kubernetes pod. I want to copy a diagnostic executable jar file inside the Kubernetes pod and execute it without stopping the pod. How can this be achieved ? Is there a specific way to run the executable jar using the Kubernetes pod environment in place ?
You can try the kubectl cp command:
From the docs:
Copy /tmp/foo_dir local directory to /tmp/bar_dir in a remote pod in the default namespace
kubectl cp /tmp/foo_dir <some-pod>:/tmp/bar_dir
Copy /tmp/foo local file to /tmp/bar in a remote pod in a specific container
kubectl cp /tmp/foo <some-pod>:/tmp/bar -c <specific-container>
Copy /tmp/foo local file to /tmp/bar in a remote pod in namespace
kubectl cp /tmp/foo <some-namespace>/<some-pod>:/tmp/bar
Copy /tmp/foo from a remote pod to /tmp/bar locally
kubectl cp <some-namespace>/<some-pod>:/tmp/foo /tmp/bar
Once the executable is added inside the container, you can exec into the pod and execute the file manually.
To open up interactive bash terminal
kubectl exec <pod name> -n <namespace> -c <container name> -it bash
After this, find your executable jar and run it. once completed, exit the terminal.
You can run it directly.
kubectl exec <podname> -n <namespace> -c <container name> -- < command to run your jar >
check this official k8s page https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#exec