前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >istio kiali jaeger 关联

istio kiali jaeger 关联

作者头像
py3study
发布2021-01-29 10:57:15
1.9K0
发布2021-01-29 10:57:15
举报
文章被收录于专栏:python3

一、jaeger 介绍

jaeger 官网:https://www.jaegertracing.io/

jaeger 是 Uber 开源的分布式跟踪系统,用于微服务的监控和全链路跟踪,其设计思想来自于 Dapper 和 zipkin。jaeger 特征包括:

  1. 分布式上下文传播
  2. 分布式事务监控
  3. Root 原因分析
  4. 服务依赖性分析
  5. 性能/延迟优化

二、jaeger 安装

如果你使用 istioctl profile demo 安装 istio 的话,jaeger 默认就是安装好的

代码语言:javascript
复制
[root@k8s-master k8s]# kubectl get svc -n istio-system
NAME                   TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                                                                      AGE
grafana                ClusterIP   10.1.5.34      <none>        3000/TCP                                                                     6h54m
istio-egressgateway    ClusterIP   10.1.247.154   <none>        80/TCP,443/TCP,15443/TCP                                                     6h55m
istio-ingressgateway   NodePort    10.1.117.117   <none>        15021:32064/TCP,80:32223/TCP,443:32254/TCP,31400:30364/TCP,15443:30581/TCP   6h55m
istiod                 ClusterIP   10.1.76.150    <none>        15010/TCP,15012/TCP,443/TCP,15014/TCP                                        6h56m
jaeger-collector       ClusterIP   10.1.74.203    <none>        14268/TCP,14250/TCP                                                          23m
kiali                  NodePort    10.1.4.30      <none>        20001:31461/TCP,9090:32540/TCP                                               6h54m
prometheus             ClusterIP   10.1.198.172   <none>        9090/TCP                                                                     6h54m
tracing                ClusterIP    10.1.122.6     <none>        80:/TCP                                                                 23m
zipkin                 ClusterIP   10.1.171.167   <none>        9411/TCP                                                                     23m

注意:在istio老版本叫jaeger-query,新版本叫tracing

为了可以将 jaeger 暴露在 k8s 集群外访问,需要将 tracing的 ClusterIP 服务类型更改为 NodePort。执行语句如下

代码语言:javascript
复制
kubectl patch svc -n istio-system tracing -p '{"spec":{"type": "NodePort"}}'

查看svc端口

代码语言:javascript
复制
[root@k8s-master k8s]# kubectl get svc -n istio-system|grep tracing
tracing                NodePort    10.1.122.6     <none>        80:31137/TCP                                                                 26m

可以看到暴露的端口为:31137

使用浏览器访问:

代码语言:javascript
复制
http://192.168.31.236:31137/jaeger/

注意:192.168.31.236是k8s-master地址

效果如下:

1.png
1.png

三、kiali 关联 jaeger

kiali 是可视化服务网格组件,截图如下:

1.png
1.png

点击上面箭头 Distributed Tracing 链接可以打开 jaeger。如果访问不到,说明你本地的浏览器并不能直接访问到 kiali 设置的 jaeger 外部链接。

注意:默认是没有的,我是关联之后才有的,莫慌。

设置 kiali jaeger 外部链接地址

编辑 kiali configmap:

代码语言:javascript
复制
kubectl edit configmap -n istio-system kiali

在 external_services.tracing.url 内容下添加 jaeger 外部链接,链接地址就是 istio-system 命名空间下 jaeger-query 服务的宿主机地址和 nodeport

代码语言:javascript
复制
external_services:
      custom_dashboards:
        enabled: true
      tracing:
        url: http://192.168.31.236:31137/jaeger
        in_cluster_url: http://tracing/jaeger

编辑 kiali configmap 后,需要删除并重新生成 kiali pod,好让配置挂载生效,执行语句如下

代码语言:javascript
复制
kubectl delete pod -n istio-system $(kubectl get pod -n istio-system | grep -i kiali | awk '{print $1}')

执行完后,再次查看 kiali pod

代码语言:javascript
复制
[root@k8s-master k8s]# kubectl get pods -n istio-system|grep kiali
kiali-667b888c56-nt27g                  1/1     Running   0          15m

查看发现 url 值已经生效:

代码语言:javascript
复制
[root@k8s-master k8s]# kubectl -n istio-system exec -it kiali-667b888c56-nt27g -- cat /kiali-configuration/config.yaml
auth:
  openid: {}
  openshift:
    client_id_prefix: kiali
  strategy: anonymous
...
external_services:
  custom_dashboards:
    enabled: true
  tracing:
    url: http://192.168.31.236:31137/jaeger
    in_cluster_url: http://tracing/jaeger

再次刷新访问 kiali,就会在左侧栏出现Distributed Tracing,点击它,就会打开jaeger,效果同上!

四、kiali jaeger 流量关联

以上的操作中通过 kiali 可以打开 jaeger 了,还可以通过实际流量将 kiali 和 jaeger 关联起来,首先打入一些流量,这里采用的是 istio 的官方用例 bookinfo:

代码语言:javascript
复制
while true; do sleep 1;curl http://192.168.31.16:32223/productpage; done

访问 kiali 的 service 菜单标签:

1.png
1.png

 双击 productpage 进入微服务,然后选择标签页 Traces,再点击蓝色圆圈(trace 点)后会显示该 tracing 的路径信息,然后再选择链接(View Trace in Tracing):

1.png
1.png

 点击View in Tracing,效果如下:

1.png
1.png

点击下面的istio-ingressgateway: productpage.default.svc.cluster.local:9080/productpage

1.png
1.png

效果如下:

1.png
1.png

本文参考链接:

https://blog.51cto.com/14268033/2488805

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/01/26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、jaeger 介绍
  • 二、jaeger 安装
  • 三、kiali 关联 jaeger
    • 设置 kiali jaeger 外部链接地址
    • 四、kiali jaeger 流量关联
    相关产品与服务
    容器服务
    腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档