你如何从其IP地址获得Kubernetes pod的名字?

Mat*_*ams 15 kubernetes

如何从其IP地址获取pod的名称?无论在何处调用,kubectl+ sed/ awk/ grep/ etc 的神奇咒语kubectl是什么?

Cam*_*mil 24

例:

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 
Run Code Online (Sandbox Code Playgroud)

通过IP获取pod名称

kubectl get --all-namespaces  --output json  pods | jq '.items[] | select(.status.podIP=="10.22.19.69")' | jq .metadata.name
"alpine-3835730047-ggn2v"
Run Code Online (Sandbox Code Playgroud)

通过IP获取容器名称

kubectl get --all-namespaces  --output json  pods | jq '.items[] | select(.status.podIP=="10.22.19.69")' | jq .spec.containers[].name
"alpine"
Run Code Online (Sandbox Code Playgroud)


Har*_*chu 17

无需额外工具即可完成,只需 kubectl 即可:

kubectl get pods -o custom-columns=:metadata.name --no-headers=true --field-selector status.podIP=<pod-ip-address-goes-here>
Run Code Online (Sandbox Code Playgroud)


小智 13

另一种通过 ip 地址获取 pod 名称的方法是这样的:

$ 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>
Run Code Online (Sandbox Code Playgroud)

在此示例中,IP 地址“10.2.6.181”的 Pod 名称为“jenkins-2-7d6d7fd99c-9xgkx”。