Kiali: Error rendering dashboard on GKE with Istio add-on

Created on 21 Jun 2019  路  20Comments  路  Source: kiali/kiali

Describe the bug

Kiali fails to render graphs and charts following the quick start instructions on a vanilla GKE cluster with istio add-on.

Screenshot 2019-06-21 12 14 35

Two errors seems important:

1) Cannot load the graph: Get http://prometheus.istio-system:9090/api/v1/query?query=round%28sum%28rate%28istio_requests_total%7Breporter%3D%22destination%22%2Csource_workload%3D%22unknown%22%2Cdestination_service_namespace%3D%22default%22%7D+%5B60s%5D%29%29+by+%28source_workload_namespace%2Csource_workload%2Csource_app%2Csource_version%2Cdestination_service_namespace%2Cdestination_service_name%2Cdestination_workload_namespace%2Cdestination_workload%2Cdestination_app%2Cdestination_version%2Crequest_protocol%2Cresponse_code%2Cresponse_flags%29%2C0.001%29&time=2019-06-21T19%3A15%3A23Z: dial tcp: lookup prometheus.istio-system on 10.181.0.10:53: no such host

2) Unknown Istio implementation version [email protected]/istio-b2915d396d159e54a88a259c971940348d8a9082-b2915d396d159e54a88a259c971940348d8a9082-Clean is not recognized, thus not supported.

The GKE add-on is quite opaque, but it seems that Grafana, Prometheus, and Istio are either not installed, not installed where expected, or the wrong version. If there are extra steps that need to be done, it would be great to have those in the documentation.

Versions used
Kiali: 0.21
Istio: 1.1.3-gke.0 (presumed, from GKE cluster version)
Kubernetes flavour and version: GKE 1.13.6-gke.6

To Reproduce
Quick install, then go to the dashboard.

Expected behavior
Graphs demonstrating service to service communication

Most helpful comment

@majelbstoat @shotat
by the way, to recognize this version in kiali should be an easy "goot first bug" as the changes are located just in this area:
https://github.com/kiali/kiali/blob/master/status/versions.go#L25

We'd love to get more contributors in the project :-) so I invite you if you can help us to grow our community members !

Thanks again.

All 20 comments

@lucasponce was just running tests on GKE - he can probably help. He had it working. Though I will say this:

Unknown Istio implementation version [email protected]/istio-b2915d396d159e54a88a259c971940348d8a9082-b2915d396d159e54a88a259c971940348d8a9082-Clean is not recognized, thus not supported.

Means you aren't using a released version of Istio. That's a version string from probably a self-built Istio or a snapshot release or something.

I think I am maybe on an early access version (to workaround a different istio/k8s bug 馃槀) so that would make sense. but, i think GKE always does slightly bespoke builds, hence the -gke.X designation they add, so i'm curious whether this will be an ongoing problem. thanks for the clarification.

BTW: any errors you get like that about graph not able to render, look in the kiali pod's logs - usually you'll see error messages that can be used to help diagnose the problem.

Oh, apologizes, I didn't see the notification of this issue.

@majelbstoat I'm using these draft notes for installing Istio, exposing Telemetry addongs and upgrading Kiali on GKE:

https://gist.github.com/lucasponce/ac4de4ad5a2994ec7e5a291746db4c28

I want to prepare a more ellaborated document once it's tested but let me know if those help to you.

As there are several steps, I tried to summarize them into a single document.

If correct I can create a medium post with all the details.

Thanks

Thanks @lucasponce, I'll give this a crack. One notable difference will be that because the cluster has Cloud Run with GKE enabled, it already has a specific version of istio installed as part of GKE's istio add-on. But, i'll see if that causes issues :)

@majelbstoat yeah, the specific integration between GKE and the Istio addon can be the issue here.
In my notes I basically follow the Istio recommendation:
https://istio.io/docs/setup/kubernetes/platform-setup/gke/
But with all the steps in a single place to install/configure all pieces.

Let me know if it works for you.

@majelbstoat I updated the steps used to install Istio on GKE and upgrade Kiali to v1.0.0 here
https://lucasponce.github.io/presentations/install-istio-kiali.html

We have tested this with some group of users and no problems so far, please, let me know if it also works for your environment, or if there is some scenario not covered and we can update/work on it.

Thanks

Same issue.
Is there any way to run Kiali with managed Istio on GKE?
It would be nice if we could run Kiali without reinstalling Istio manually.

@shotat Do you get both the unknown version message and the error loading the graph? or just one of them?

@shotat I will try to give a try to see if I can reproduce your errors.

Ok, I've installed GKE with Istio addon and these are my pods and services:

[lponce@attilan ~]$ kubectl get pods -n istio-system
NAME                                     READY     STATUS    RESTARTS   AGE
istio-citadel-859cbd6bc7-hr6r4           1/1       Running   0          3m
istio-galley-6f7fd75474-kcqgz            1/1       Running   0          3m
istio-ingressgateway-6c77f9bfb4-k7gkb    1/1       Running   0          3m
istio-pilot-9ddcf649-xkb9q               2/2       Running   0          3m
istio-policy-7bf9cf67b7-62wxk            2/2       Running   3          3m
istio-sidecar-injector-94c485dbb-zdptm   1/1       Running   0          3m
istio-telemetry-5954dc5ddc-szh44         2/2       Running   2          3m
promsd-76f8d4cff8-df2rq                  2/2       Running   1          3m

[lponce@attilan ~]$ kubectl get services -n istio-system
NAME                     TYPE           CLUSTER-IP     EXTERNAL-IP      PORT(S)                                                                                                                                      AGE
istio-citadel            ClusterIP      10.72.0.233    <none>           8060/TCP,15014/TCP                                                                                                                           6m
istio-galley             ClusterIP      10.72.3.32     <none>           443/TCP,15014/TCP,9901/TCP                                                                                                                   6m
istio-ingressgateway     LoadBalancer   10.72.13.104   104.197.116.26   15020:31361/TCP,80:31380/TCP,443:31390/TCP,31400:31400/TCP,15029:31594/TCP,15030:31780/TCP,15031:31299/TCP,15032:30835/TCP,15443:30460/TCP   6m
istio-pilot              ClusterIP      10.72.4.73     <none>           15010/TCP,15011/TCP,8080/TCP,15014/TCP                                                                                                       6m
istio-policy             ClusterIP      10.72.9.194    <none>           9091/TCP,15004/TCP,15014/TCP                                                                                                                 6m
istio-sidecar-injector   ClusterIP      10.72.10.80    <none>           443/TCP                                                                                                                                      6m
istio-telemetry          ClusterIP      10.72.10.29    <none>           9091/TCP,15004/TCP,15014/TCP,42422/TCP                                                                                                       6m
promsd                   ClusterIP      10.72.1.238    <none>           9090/TCP                                                                                                                                     6m

So, by default prometheus service is diffferent and it seems that is using the "promsd", so when installing Kiali, the Kiali CR should customize this, because by default Istio uses "http://prometheus.istio-system:9090" and in this case, it sounds it should be used as "http://promsd.istio-system:9090".

This is the reference:
https://github.com/kiali/kiali/blob/master/operator/deploy/kiali/kiali_cr.yaml#L207

That would be a first step, we should check if there are further changes.
I don't see other addons, so Jaeger tracing integration won't be available as well.

Let me know if that helps.

P.S.: I will try to prepare a custom CR today to check if there are more changes to apply, but just wanted to share this first.

Ok, confirmed.

I used this Kiali CR:

apiVersion: kiali.io/v1alpha1
kind: Kiali
metadata:
  name: kiali
annotations:
  ansible.operator-sdk/reconcile-period: "0s"
spec:
  deployment:
    image_version: "v1.0"
    accessible_namespaces: [ "**" ]  
  external_services:
    grafana:
      url: 
    tracing:
      service: tracing
      url: 
    prometheus:
      url: "http://promsd.istio-system:9090"      
  identity:
    cert_file: ""
    private_key_file: ""

with the operator update:

bash <(curl -L https://git.io/getLatestKialiOperator) -oiv v1.0.0 --kiali-cr $HOME/update-kiali-cr.yaml

To install Kiali 1.0.0 and update the prometheus service in the kiali-cr.

If you have installed a current version you can edit the Kiali CR online using:

聽[lponce@attilan ~]$ kubectl edit kiali kiali -n kiali-operator

and adding your changes there. The operator should re-start Kiali with the good url.

Please, let me know if this helps.

cc @majelbstoat @shotat

@israel-hdez

Do you get both the unknown version message and the error loading the graph? or just one of them?

Both of them.

@lucasponce

Thank you for the quick investigation!
I'd like to try it later. ( I'm sorry but it may take for a few days because of my another work to do. )

Making these changes seems to get it working :)

Stlil have this error:

Unknown Istio implementation version [email protected]/istio-b2915d396d159e54a88a259c971940348d8a9082-b2915d396d159e54a88a259c971940348d8a9082-Clean is not recognized, thus not supported.

But pages load, services are listed etc.

Thanks!

Yes, Kiali should be updated to recognize other Istio distributions.

Thanks for the feedback.

@majelbstoat @shotat
by the way, to recognize this version in kiali should be an easy "goot first bug" as the changes are located just in this area:
https://github.com/kiali/kiali/blob/master/status/versions.go#L25

We'd love to get more contributors in the project :-) so I invite you if you can help us to grow our community members !

Thanks again.

based on @lucasponce 's fix, but in order to avoid overriding other settings I ended up using a patch on the custom resource

kubectl -n kiali-operator patch kiali.kiali.io -p '{"spec": {"external_services": {"prometheus": {"url": "http://promsd.istio-system:9090"}}}}' kiali --type=merge

Closing this issue.
Please, don't hesitate to re-open, if there is more actions to perform around the topic.

As per the Istio on GKE release notes, promsd is for internal metrics only. Instead, use this guide to install Prometheus for Istio on GKE.

Was this page helpful?
0 / 5 - 0 ratings