如何使用IP地址访问grafana-istio仪表板?

时间:2019-09-23 08:06:56

标签: kubernetes microservices grafana minikube istio

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

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

3 个答案:

答案 0 :(得分: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://<public_ip_istio_ingressgateway>,您应该会看到grafana仪表板

希望对您有帮助。

答案 1 :(得分:0)

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

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

进行访问

答案 2 :(得分:0)

检查grafana服务类型。

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

NodePort与ip一起使用,或者您只需使用LoadBalancer的IP地址即可访问grafana vai internet的在线服务。