12.1 整体介绍

上一章

12.3 升级Istio

下一章

更多图书

12.2 Istio服务网格仪表板

Istio服务网格仪表板(Dashboard)可以用来更好地观测Istio的运行状态以及服务网格内服务的流量情况,甚至可以直接在Web上修改Istio的路由等配置。在目前的Istio服务网格仪表板中,Kiali功能最多,本节介绍如何安装Kiali并使用其功能。

本节实验在以官方示例的方式部署Istio的集群中进行,并且部署所有用于实验的微服务。

(1)安装Kiali

暴露Jaeger查询Web服务:


$ kubectl apply -f kubernetes/istio-tracing-service.yaml

部署Kiali:


#部署


$ export GRAFANA_URL='http://grafana.istio-system:3000'
$ export JAEGER_URL='http://11.11.11.111:32144'
$ export KIALI_USERNAME='admin'
$ export KIALI_PASSPHRASE='admin'
$ curl -sL http://git.io/getLatestKialiKubernetes | sed 's/create/apply/g' | bash
#查看状态


$ kubectl get pod -n istio-system -l app=kiali
NAME                          READY        STATUS        RESTARTS        AGE
kiali-86bf676785-g9vht        1/1          Running       0               81s

(2)访问服务

创建用于请求的Pod:


$ kubectl apply -f kubernetes/fortio.yaml

并发请求服务:


$ kubectl exec fortio -c fortio /usr/local/bin/fortio -- load -curl http://service-python/env
HTTP/1.1 200 OK
content-type: application/json
content-length: 178
server: envoy
date: Sat, 19 Jan 2019 03:45:15 GMT
x-envoy-upstream-service-time: 1778
{"message":"python v1","upstream":[{"message":"lua v1","response_time":0.38},{"message":"node v1","response_time":1.11,"upstream":[{"message":"go v2","response_time":"0.42"}]}]}
$ kubectl exec fortio -c fortio /usr/local/bin/fortio -- load -qps 10 -n 100 -loglevel Error http://service-python/env
03:46:03 I logger.go:97> Log level is now 4 Error (was 2 Info)
Fortio 1.0.1 running at 10 queries per second, 2->2 procs, for 100 calls: http://service-python/env
Aggregated Sleep Time : count 96 avg -3.857372 +/- 1.741 min -7.105141974 max -0.501128479 sum -370.307712
# range, mid point, percentile, count
>= -7.10514 <= -0.501128 , -3.80314 , 100.00, 96
# target 50% -3.83789
WARNING 100.00% of sleep were falling behind
Aggregated Function Time : count 100 avg 0.68609566 +/- 0.4486 min 0.03083198 max 2.099653766 sum 68.6095656
# target 50% 0.633333
# target 75%   1.14815
# target 90%   1.7037
# target 99%   2.04983
# target 99.9% 2.09467
Sockets used: 6 (for perfect keepalive, would be 4)
Code 200 : 98 (98.0 %)
Code 503 : 2  (2.0 %)
All done 100 calls (plus 0 warmup) 686.096 ms avg, 5.8 qps

创建Web访问的路由规则:


$ kubectl apply -f istio/route/gateway-js-v1.yaml

浏览器访问。

访问地址http://11.11.11.112:31380/ ,多次刷新并点击“发射”按钮。

(3)访问Kiali

获取访问地址:


$ KIALI_NODEPORT=$(kubectl get svc kiali -n istio-system -o jsonpath='{.spec.ports[0].nodePort}')
$ INGRESS_HOST=$(kubectl get node -o jsonpath='{.items[0].status.addresses[0].address}')
$ echo "https://$INGRESS_HOST:$KIALI_NODEPORT/kiali/"
https://11.11.11.111:32072/kiali/

访问上一步骤中获取的kialia地址https://11.11.11.111:32072/kiali/ ,用户名和密码均为admin。

查看服务调用树,如图12-1所示。

图12-1 服务调用树

查看应用列表,如图12-2所示。

图12-2 应用列表

查看服务实例状态,如图12-3所示。

图12-3 服务实例状态

查看Istio路由等相关配置,如图12-4所示。

图12-4 Istio路由等相关配置

(4)清理


$ kubectl delete -f kubernetes/fortio.yaml
$ kubectl delete -f istio/route/gateway-js-v1.yaml
$ kubectl delete -f kubernetes/istio-tracing-service.yaml
$ kubectl delete all,secrets,sa,configmaps,deployments,ingresses,clusterroles,clusterrolebindings,virtualservices,destinationrules,customresourcedefinitions --selector=app=kiali -n istio-system