使用 kubectl 或 kubernetes api 获取服务的外部 ip

using kubectl or kubernetes api to fetch external ip of a service

各位, 有没有比解析 kubectl 输出的输出更简单的方法来获取 Kubernetes 中服务的外部 ip 地址?

kubectl get services/foo --namespace=foo -o json

谢谢!

你不能只使用 jq 来做类似

的事情吗
kubectl get services/foo --namespace=foo -o json| jq '.items[0].status.hostIP'

https://stedolan.github.io/jq/

使用 kubectl 是获取服务入口 IP 地址的最简单方法。如果您只想获取 IP 地址,那么您可以将大部分解析作为 kubectl 命令本身的一部分进行。

kubectl get svc foo -n foo \
    -o jsonpath="{.status.loadBalancer.ingress[*].ip}"

这可能不适用于您,但某些云负载均衡器(如 AWS ELB)会为您提供主机名而不是 IP 地址,因此您需要查找主机名。

kubectl get svc foo -n foo \
    -o jsonpath="{.status.loadBalancer.ingress[*].hostname}"

如果您愿意,可以使用 jsonpath 联合运算符来获得两者。

kubectl get svc foo -n foo \
    -o jsonpath="{.status.loadBalancer.ingress[*]['ip', 'hostname']}"

如果您想要人类可读的输出,您可以使用 custom-columns 输出格式。

kubectl get svc foo -n foo \
    -o custom-columns="NAME:.metadata.name,IP ADDRESS:.status.loadBalancer.ingress[*].ip"