【问题标题】:How to access grafana-istio dashboard using ip address?如何使用 ip 地址访问 grafana-istio 仪表板?
【发布时间】:2020-01-23 06:25:38
【问题描述】:

我正在使用minikube 运行 kubernetes 集群。我按照Istio Docs 中给出的设置安装了 istio 插件。我可以使用localhost:3000 访问仪表板,但无法使用ip:3000 访问。

检查防火墙。它没有阻塞任何端口。

【问题讨论】:

    标签: kubernetes microservices grafana minikube istio


    【解决方案1】:

    不幸的是,如果您使用的是istio,那么仅更改服务类型并不容易。您必须配置 Istio VirtualService 并创建 Gateway

    我将此答案发布为与另一个堆栈案例相关的社区 wiki:https://stackoverflow.com/a/56019381/11148139 如前所述,问题有 1 个反对票,将来可能会被删除,我将在这种情况下发布以供将来使用。

    =============================================

    您可以创建Istio Gateway and VirtualService 以便将您的请求转发到默认在端口3000 上运行的grafana 服务

    首先,让我们检查grafanaistio-ingressgateway 服务

    kubectl get svc grafana istio-ingressgateway -n istio-system
    NAME                   TYPE           CLUSTER-IP      EXTERNAL-IP                                                               PORT(S)                                                                                                                                      AGE
    grafana                ClusterIP      100.71.67.105   <none>                                                                    3000/TCP                                                                                                                                     18h
    istio-ingressgateway   LoadBalancer   100.64.42.106   <Public IP address>   15020:31766/TCP,80:31380/TCP,443:31390/TCP,31400:31400/TCP,15029:32576/TCP,15030:30728/TCP,15031:31037/TCP,15032:31613/TCP,15443:32501/TCP   18h
    

    所以,我们让grafana 运行服务在端口 3000 上侦听,默认 istio-ingressgateway LoadBalancer 服务使用分配的公共 IP 地址运行。

    然后我们创建gateway 来使用这个默认的LoadBalancer。

    $ kubectl apply -f - <<EOF
    apiVersion: networking.istio.io/v1alpha3
    kind: Gateway
    metadata:
      name: grafana-gateway
      namespace: istio-system # Use same namespace with backend service
    spec:
      selector:
        istio: ingressgateway # use Istio default gateway implementation
      servers:
      - port:
          number: 80
          name: HTTP
          protocol: HTTP
        hosts:
        - "*"
    EOF
    

    然后配置到grafana service的路由,用于通过此网关进入的流量:

    $ kubectl apply -f - <<EOF
    apiVersion: networking.istio.io/v1alpha3
    kind: VirtualService
    metadata:
      name: grafana
      namespace: istio-system # Use same namespace with backend service
    spec:
      hosts:
      - "*"
      gateways:
      - grafana-gateway # define gateway name
      http:
      - match:
        - uri:
            prefix: "/"
        route:
        - destination:
            port:
              number: 3000 # Backend service port
            host: grafana # Backend service name
    EOF
    

    然后点击http://&lt;public_ip_istio_ingressgateway&gt;,你应该会看到 grafana 仪表板

    希望对你有帮助。

    【讨论】:

      【解决方案2】:

      您需要为此设置 grafana 服务类型NodePort。您可以使用$ kubectl edit svc grafana -n istio-system 更改它,并将.spec.typeClusterIP 更改为NodePort,然后保存并退出编辑器。

      要访问 grafana $ kubectl get svc grafana -n istio-system 并获取 NodePort 字段,然后通过 ip:$NodePortValue 访问它

      【讨论】:

        【解决方案3】:

        检查 grafana 服务类型。

        您可以使用NodePortLoadBalancer 作为服务类型。

        使用NodePort和ip或者你可以简单地使用LoadBalancer的IP地址来访问grafana vai internet的在线服务。

        【讨论】:

          猜你喜欢
          • 2019-09-21
          • 2020-01-25
          • 2021-06-23
          • 1970-01-01
          • 1970-01-01
          • 2011-03-17
          • 2017-05-15
          • 1970-01-01
          • 2015-09-18
          相关资源
          最近更新 更多