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