Как получить имя модуля с его IP-адреса? Какое волшебное заклинание kubectl
+ sed
/awk
/grep
/etc независимо от того, где вызывается kubectl
?
Как вы получаете имя Kubernetes pod с его IP-адреса?
Ответ 1
Пример:
kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE
alpine-3835730047-ggn2v 1/1 Running 0 5d 10.22.19.69 ip-10-35-80-221.ec2.internal
получить имя pod по IP
kubectl get --all-namespaces --output json pods | jq '.items[] | select(.status.podIP=="10.22.19.69")' | jq .metadata.name
"alpine-3835730047-ggn2v"
получить имя контейнера по IP
kubectl get --all-namespaces --output json pods | jq '.items[] | select(.status.podIP=="10.22.19.69")' | jq .spec.containers[].name
"alpine"
Ответ 2
Другой способ получить имя модуля по IP-адресу:
$ kubectl get pods --all-namespaces -o wide | grep 10.2.6.181
jenkins jenkins-2-7d6d7fd99c-9xgkx 2/2 Running 3 12d 10.2.6.181 ip.ap-southeast-2.compute.internal <none>
В этом примере имя модуля "jenkins-2-7d6d7fd99c-9xgkx" для IP-адреса "10.2.6.181".
Ответ 3
Может быть сделано без дополнительных инструментов, достаточно kubectl:
kubectl get pods -o custom-columns=:metadata.name --no-headers=true --field-selector status.podIP=<pod-ip-address-goes-here>