I have one pod running with name 'jenkins-app-2843651954-4zqdp'. I want to install few softwares temporarily on this pod. How can I do this?
I am trying this- kubectl exec -it jenkins-app-2843651954-4zqdp -- /bin/bash
and then running apt-get install commands but since the user I am accessing with doesn't have sudo access I am not able to run commands
kubectl describe pod ...
to find the node running your Pod and the container ID (docker://...
)docker exec -u root ID -- /bin/bash
There are some plugins for kubectl that may help you achieve this: https://github.com/jordanwilson230/kubectl-plugins
One of the plugins called, 'ssh', will allow you to exec as root user by running (for example) kubectl ssh -u root -p nginx-0
docker container ls
to find container IDdocker exec -it -u root ID /bin/bash
For my case, I was in need for root access (or sudo) to container to give the chown
permission to a specific mount path.
I cannot SSH to machine because I designed my infrastructure to be fully automated with Terraform without any manual access.
Instead, I found that initContainers
does the job:
initContainers:
- name: volume-prewarming
image: busybox
command: ["sh", "-c", "chown -R 1000:0 {{ .Values.persistence.mountPath }}"]
volumeMounts:
- name: {{ .Chart.Name }}
mountPath: {{ .Values.persistence.mountPath }}
I've also created a whole course about Production grade running kubernetes on AWS using EKS