如何通过IP地址获取 Kubernetes pod 的名称?

down 发表于: 2022-02-19   最后更新时间: 2022-02-20 00:04:03   1,822 游览

如何从IP地址得到一个pod的名字? kubectl+sed/awk/grep/等都可以,我该怎么调用?

发表于 2022-02-19

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

kubectl get pods -o custom-columns=:metadata.name --no-headers=true --field-selector status.podIP=<pod-ip-address-goes-here>

另一种通过 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>

例子:

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 

通过 IP 获取 pod 名称

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"
你的答案

查看kubernetes相关的其他问题或提一个您自己的问题