Hi satyabratabharati:
Maybe not exactly what you need, but I hope it helps you building your own solution.
You mention that you use kubectl
to redeploy your monitoring pod, so I’ve built a quick & dirty solution (to get the containerID):
#!/usr/bin/env bash
set -e
if [ -z "$KUBECONFIG" ]
then
printf "\$KUBECONFIG not set.\n"
exit 1
fi
pod_label="$1"
pod_namespace="$2"
wait_seconds=4
last_container_id=""
get_container_id() {
echo $(kubectl get pods -l "app.kubernetes.io/name=${pod_label}" -n "${pod_namespace}" -o json | jq -r '.items[].status.containerStatuses[].containerID' | tr -d 'containerd://')
}
printf 'Watching namespace "%s" (with label "%s") ... \n' "${pod_namespace}" "${pod_label}"
while true
do
container_id=$(get_container_id)
# printf "ContainerID: %s\n" "$container_id"
if [[ "$container_id" != "$last_container_id" ]]
then
printf "ContainerID: %s\n" "$container_id"
last_container_id="${container_id}"
fi
sleep "${wait_seconds}"
done
To run the script, make sure you set the KUBECONFIG
variable to point to a your config file:
$ export KUBECONFIG=~/repos/vagrant/k3s-ubuntu-cluster/kubeconfig
$ ./pod_id.sh "argocd-server" "argocd"
Watching namespace "argocd" (with label "argocd-server") ...
ContainerID: 21281939115633b63455b13b6079528b37f904f9ffb268b190bf0
If I force the restart of the pod, using:
$ kubectl -n argocd rollout restart deployment argocd-server
deployment.apps/argocd-server restarted
Then, the output of the script running in a separate terminal:
$ ./pod_id.sh "argocd-server" "argocd" 130 ↵
Watching namespace "argocd" (with label "argocd-server") ...
ContainerID: 21281939115633b63455b13b6079528b37f904f9ffb268b190bf0
ContainerID: 21281939115633b63455b13b6079528b37f904f9ffb268b190bf0 ull
ContainerID: 08047900167b20192704669334768182f825281777f540
There are some transient effects while the pod is being created but it gets the job done
A more elaborated solution (written in Go) may be built following the example in client-go/examples/in-cluster-client-configuration at master · kubernetes/client-go · GitHub and deployed inside the cluster.
Best regards,
Xavi