Executing a kubernetes pod with the use of pod name

4/25/2020

I am writing a shell script for executing a pod for which the syntax is:

winpty  kubectl --kubeconfig="C:\kubeconfig" -n namespace exec -it podname bash

This works fine but since podname is not stable and changes for every deployment so is there any alternative for this?

Thanks.

-- Ash Raf
bash
kubectl
kubernetes
shell

3 Answers

4/25/2020

Add a service to your application:

As you know, pods are ephemeral; They come in and out of existence dynamically to ensure your application stays in compliance with your configuration. This behavior implements the scaling and self-healing aspects of kubernetes.

You application will consist of one or more pods that are accessible through a service , The application's service name and address does not change and so acts as the stable interface to reach your application.

This method works both if your application has one pod or many pods.

Does that help?

-- Perryn Gordon
Source: StackOverflow

4/27/2020

You can use normally $ kubectl exec command but define value for changing pod name.

Assuming that you have deployment and labeled pods: app=example, simply execute:

$ kubectl exec -it $(kubectl get pods -l app=example -o custom-columns=:metadata.name) -- bash

EDIT:

You can also execute:

POD_NAME = $(kubectl get pods -l app=example -o custom-columns=":metadata.name")

or

POD_NAME = $(kubectl get pods -l app=example -o jsonpath = "{. Items [0] .metadata.name}")

finally

$ winpty kubectl exec -ti $POD_NAME --bash

Make sure that you execute command in proper namespace - you can also add -n flag and define it.

-- MaggieO
Source: StackOverflow

4/25/2020

You can use the following command:

kubectl -n <namespace> exec -it deploy/<deployment-name> -- bash
-- irvifa
Source: StackOverflow