使用 kubectl 或 Kubernetes API 获取服务的外部 IP

3

大家好,

有没有一种更简单的方法来获取Kubernetes中服务的外部IP地址,而不是解析kubectl输出的结果?

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

谢谢!

2个回答

10

使用 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"

1
“你不能仅使用 jq 来执行类似以下的操作吗?”
kubectl get services/foo --namespace=foo -o json| jq '.items[0].status.hostIP'

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接