【问题标题】:How do I get the External IP of a Kubernetes service as a raw value?如何获取 Kubernetes 服务的外部 IP 作为原始值?
【发布时间】:2018-06-06 18:27:13
【问题描述】:

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

【问题讨论】:

    标签: kubernetes kubectl google-kubernetes-engine


    【解决方案1】:

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

    【讨论】:

    • 注意:如果您想在其他地方使用它,请在 jq 上使用 -r 来获取原始值(否则它会在返回的字符串中包含引号)
    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

      在我的例子中,'kubectl get services' 返回项目数组,但不仅仅是一个服务。

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

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

      【讨论】:

        【解决方案4】:

        上面的答案没有提供用户询问的输出。正确的命令是: kubectl -n $namespace get svc $ingressServiceName -o json | jq -r .status.loadBalancer.ingress[].hostname

        【讨论】:

          【解决方案5】:

          ...还有另一种方式...这将列出所有“负载平衡器”服务

          kubectl get services --all-namespaces -o json | jq -r '.items[] | { name: .metadata.name, ns: .metadata.namespace, ip: .status.loadBalancer?|.ingress[]?|.ip }'

          根据您的集群服务/pod 使用的 networkPlugin 可能会直接暴露在 external-ip 上。但这也会发现集群中运行了一个 Ingress 控制器。

          【讨论】:

            【解决方案6】:

            所有以前的解决方案都不再适用于我(在 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}"
            

            【讨论】:

              猜你喜欢
              • 2018-08-27
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-10-21
              • 1970-01-01
              • 2015-11-19
              • 1970-01-01
              相关资源
              最近更新 更多