我正在用GKE运行一个应用程序。它运行得很好,但我不知道如何以机器可读的格式获得服务的外部IP。所以我正在搜索一个gcloud或kubectl命令,它只给我外部IP或http://192.168.0.2:80的url,以便我可以删除IP。
http://192.168.0.2:80
qojgxg4l1#
您可以使用jsonpath输出类型直接获取数据,而不需要额外的jq来处理json:
jq
kubectl get services \ --namespace ingress-nginx \ nginx-ingress-controller \ --output jsonpath='{.status.loadBalancer.ingress[0].ip}'
确保用您的名称分别替换命名空间和服务名称。
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
kubectl get svc
kubectl -n kube-system get svc cluster-nginx-ingress-controller -o json | jq .status.loadBalancer.ingress.hostname
y53ybaqx3#
在我的例子中,'kubectl get services'返回项目数组,但不只是一个服务。所以这样的jsonpath对我来说很好用:
kubectl get services -l component=controller,app=nginx-ingress -o jsonpath="{.items[0].status.loadBalancer.ingress[0].ip}"
3npbholx4#
...还有另一种方法...这将列出“所有”“负载平衡器”服务第一个月根据网络的不同,集群服务/pod使用的插件可能会直接暴露在external-ip上,但这也会发现集群中运行的入口控制器。
wd2eg0qa5#
要获取GCP上的外部IP,我可以用途:
kubectl get services --namespace=<your-namespace> -o jsonpath="{.items[0].status.loadBalancer.ingress[0].ip}"
ecfdbz9o6#
以上答案未提供用户要求的输出。正确的命令应为:第一个月
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}"
tyu7yeag8#
类型
minikube tunnel
或
kubectl cluster-info
你可以得到你的相关服务的公开IP。
8条答案
按热度按时间qojgxg4l1#
您可以使用jsonpath输出类型直接获取数据,而不需要额外的
jq
来处理json:注解
确保用您的名称分别替换命名空间和服务名称。
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
y53ybaqx3#
在我的例子中,'kubectl get services'返回项目数组,但不只是一个服务。
所以这样的jsonpath对我来说很好用:
3npbholx4#
...还有另一种方法...这将列出“所有”“负载平衡器”服务
第一个月
根据网络的不同,集群服务/pod使用的插件可能会直接暴露在external-ip上,但这也会发现集群中运行的入口控制器。
wd2eg0qa5#
要获取GCP上的外部IP,我可以用途:
ecfdbz9o6#
以上答案未提供用户要求的输出。正确的命令应为:第一个月
wnvonmuf7#
所有以前的解决方案不再为我工作(GCP)。
要获取IP:
要获取主机名:
tyu7yeag8#
类型
或
你可以得到你的相关服务的公开IP。