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

euoag5mw  于 2023-01-08  发布在  Kubernetes
关注(0)|答案(8)|浏览(110)

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

qojgxg4l

qojgxg4l1#

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

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

确保用您的名称分别替换命名空间和服务名称。

vptzau2j

vptzau2j2#

也许不是GKE,因为我的集群是在AWS上,但我假设逻辑将是相似的。当你kubectl get svc你可以选择输出格式,它将显示更多,而不仅仅是“正常”的获取。对我来说,与基于ELB的服务,以het LB主机名,这是足够的运行ie.kubectl -n kube-system get svc cluster-nginx-ingress-controller -o json | jq .status.loadBalancer.ingress.hostname

y53ybaqx

y53ybaqx3#

在我的例子中,'kubectl get services'返回项目数组,但不只是一个服务。
所以这样的jsonpath对我来说很好用:

kubectl get services -l component=controller,app=nginx-ingress -o jsonpath="{.items[0].status.loadBalancer.ingress[0].ip}"
3npbholx

3npbholx4#

...还有另一种方法...这将列出“所有”“负载平衡器”服务
第一个月
根据网络的不同,集群服务/pod使用的插件可能会直接暴露在external-ip上,但这也会发现集群中运行的入口控制器。

wd2eg0qa

wd2eg0qa5#

要获取GCP上的外部IP,我可以用途:

kubectl get services --namespace=<your-namespace> -o jsonpath="{.items[0].status.loadBalancer.ingress[0].ip}"
ecfdbz9o

ecfdbz9o6#

以上答案未提供用户要求的输出。正确的命令应为:第一个月

wnvonmuf

wnvonmuf7#

所有以前的解决方案不再为我工作(GCP)。
要获取IP:

kubectl get ingress <YOUR_INGRESS_NAME> -o jsonpath="{.status.loadBalancer.ingress[0].ip}"

要获取主机名:

kubectl get ingress <YOUR_INGRESS_NAME> -o jsonpath="{.spec.rules[0].host}"
tyu7yeag

tyu7yeag8#

类型

minikube tunnel

kubectl cluster-info

你可以得到你的相关服务的公开IP。

相关问题