如何获取 Kubernetes 服务的外部 IP 作为原始值?

stm*_*stm 6 kubernetes google-kubernetes-engine kubectl

我正在使用 GKE 运行一个应用程序。它工作正常,但我不知道如何以机器可读的格式获取服务的外部 IP。所以我正在搜索一个 gcloud 或 kubectl 命令,它只给我外部 IP 或格式的 url,http://192.168.0.2:80以便我可以删除 IP。

Rad*_*nka 11

也许不是 GKE,因为我的集群在 AWS 上,但我认为逻辑会相似。当您kubectl get svc可以选择输出格式时,它会显示更多而不是“正常”获取。对我来说,使用基于 ELB 的服务来处理 LB 主机名就足以运行即。kubectl -n kube-system get svc cluster-nginx-ingress-controller -o json | jq .status.loadBalancer.ingress.hostname


ken*_*nny 10

您可以使用jsonpath输出类型直接获取数据,而无需额外jq处理 json:

kubectl get services --namespace ingress-nginx nginx-ingress-controller --output jsonpath='{.status.loadBalancer.ingress[0].ip}'

(请务必将命名空间和服务名称分别替换为您的名称。)


Gad*_*get 6

就我而言,“ kubectl get services ”返回一系列项目,但不仅仅是一项服务。

那么这样的 jsonpath 对我来说效果很好:

kubectl get services -l component=controller,app=nginx-ingress -o jsonpath="{.items[0].status.loadBalancer.ingress[0].ip}"
Run Code Online (Sandbox Code Playgroud)