31.云原生Istio可观测性之官网Bookinfo应用实战演示

云原生专栏大纲

文章目录

    • 可观测性
      • kiali介绍
        • Overview(概观)
        • Application(应用维度)
        • workloads(负载维度)
        • Services(服务维度)
        • Istio Config(配置维度)
      • Kiali部署
      • 通过 Gateway 访问 Kiali
      • 查看链路追踪数据
      • 查看Jaeger中链路追踪详情
      • Kiali可能出现的问题
        • Kiali 一直显示 Empty Graph
        • 可能失败的原因
        • 分布式链路追踪按钮跳转问题

可观测性

Istio 集成了 Jaeger、Zipkin 和 Skywalking 等链路追踪应用,能够有效地捕获服务网格的结构,展示网络拓扑结构,并分析网格的健康状况。
这一切都得益于 Envoy 代理的实现。由于所有进出流量都需要经过 Envoy 代理,Envoy 可以捕获这些流量记录,并将其推送到相应的链路追踪系统中。这样一来,可以链路追踪系统轻松地监控和分析服务网格内的流量情况。
另外 Istio 还支持 Prometheus、 Grafana 收集指标数据。
下面我们将使用官方的模板部署 Kiali 、 还有 Jaeger,然后通过 Kiali 统一查看集群的指标信息。
Kiali是一个用于可视化和监控Istio服务网格的控制面板。它提供了一个直观的用户界面,帮助用户了解和管理服务网格中的微服务应用程序。
image.png
kiali 架构还是比较简单的,属于单体应用。kiali 后台既可以跟外部服务 prometheus、cluster API 进行通信获取 istio 服务网格信息,也可以集成可选服务 jaeger 和 grafana做全链路跟踪和可视化指标度量。
以下是Kiali控制面板的主要功能和特点:

  1. 服务拓扑图:Kiali通过绘制服务之间的关系和通信流量,展示了服务网格的拓扑结构。用户可以查看微服务应用程序的整体架构,了解服务之间的依赖关系和通信路径。
  2. 流量可视化:Kiali能够显示服务之间的实时流量,并以图形化方式展示流量的分布和流向。用户可以轻松地追踪和监控流量路由、负载均衡和流量控制策略的情况。
  3. 性能指标和健康状态:Kiali提供了服务的性能指标和健康状态的可视化展示。用户可以查看服务的请求量、延迟、错误率等指标,并快速识别出性能瓶颈和故障。
  4. 故障诊断和故障排查:Kiali允许用户跟踪请求的路径,并提供了故障诊断和故障排查的工具。用户可以追踪请求的流程,查找和定位故障点,并进行故障排查和修复。
  5. 安全策略可视化:Kiali能够展示服务网格中的安全策略和访问控制规则。用户可以查看和管理服务的身份认证、流量加密和访问控制策略,确保服务之间的通信是安全的。
  6. 智能建议和自动化分析:Kiali提供了智能建议和自动化分析的功能,帮助用户优化服务网格的配置和性能。它可以检测潜在的问题和优化机会,并提供建议和指导。

总而言之,Kiali控制面板为用户提供了一个直观和全面的视图,帮助他们监控、管理和故障排查Istio服务网格。它提供了丰富的可视化功能,使用户能够更好地理解和优化服务之间的通信和性能。

Kiali kiali官网

  1. kiali登录token获取
kubectl get secrets -n istio-system
kubectl describe secrets -n istio-system <kiali-token>

kiali介绍

Overview(概观)

该菜单全局性展示所有命名空间下服务的流量(traffic)、配置状态(config status)、健康状态(✔)、应用数量(Applications)等。
image.png

Application(应用维度)

applications 指运行中的应用,kiali 独有概念。
image.png

注意:kiali只能识别设置了app标签的应用。如果一个应用有多个版本,需要将这几个版本的 app 标签设置为相同的值。

workloads(负载维度)

kiali 中的负载(workloads)跟 k8s 中的资源对应(比如 deployment、Job、Daemonset、Statefulset 等)。k8s 中的这些资源都可以在 kiali 中检测到,不管这些资源有没有加入到 istio 服务网格中。
image.png

Services(服务维度)

对应 k8s 的 service 资源类型
image.png

Istio Config(配置维度)

istio 相关配置类信息。比如这里选择 istio type 类型,将显示有关 istio 服务网格下面的各个类型对应的配置信息状态(✔ 表示配置有效;!表示告警)
image.png

Kiali部署

拉取 Istio 官方的仓库:

git clone https://github.com/istio/istio.git

在 samples/addons/ 目录中有以下目录或文件:

samples/addons/
├── extras
│   ├── prometheus-operator.yaml
│   ├── prometheus_vm_tls.yaml
│   ├── prometheus_vm.yaml
│   ├── skywalking.yaml
│   └── zipkin.yaml
├── grafana.yaml
├── jaeger.yaml
├── kiali.yaml
├── prometheus.yaml
└── README.md

我们启用 grafana.yaml、jaeger.yaml、kiali.yaml、prometheus.yaml 四个文件。

kubectl apply -f samples/addons

Istio 默认使用 Jaeger 做链路追踪,我们也可以使用 Skywalking 来做追踪。extras 目录中的配置我们可以自行部署。
执行命令查看其 Service 对应的 IP 和端口:

kubectl get svc  -n istio-system

image.png
现在,我们有两种方式让 kiali 在外部访问,一种是修改 Service 配置,将其访问类型修改为 NodePort,另一种是使用 istio-ingressgateway 配置流量入口。

通过 Gateway 访问 Kiali

kiali_gateway.yaml

apiVersion: networking.istio.io/v1alpha3  
kind: Gateway  
metadata:  name: kiali-gateway  
spec:  selector:  istio: ingressgateway  servers:  - port:  number: 15029  name: http-kiali  protocol: HTTP  hosts:  - "*"
kubectl -n istio-system apply -f kiali_gateway.yaml

接下来,创建一个 VirtualService 资源,将 Gateway 路由到 Kiali 服务.
kiali_vs.yaml

apiVersion: networking.istio.io/v1alpha3  
kind: VirtualService  
metadata:  name: kiali  
spec:  hosts:  - "*"  gateways:  - kiali-gateway  http:  - match:  - uri:  prefix: /kiali  route:  - destination:  host: kiali.istio-system.svc.cluster.local  port:  number: 20001
kubectl -n istio-system apply -f kiali_vs.yaml

然后修改 istio-ingressgateway,新增加一个配置为 kiali 暴露服务。

kubectl edit svc istio-ingressgateway -n istio-system
- name: kialinodePort: 32667port: 15029protocol: TCPtargetPort: 15029

然后访问

查看链路追踪数据

  1. kiali登录token获取
kubectl get secrets -n istio-system
kubectl describe secrets -n istio-system <kiali-token>
  1. 制作请求

因为默认链路追踪采样率是 1%,所以可以将请求次数设置大一些。

for i in `seq 1 1000`; do curl -s -o /dev/null http://192.168.31.21:32666/productpage; done
  1. 查看链路图

image.png
image.png
Kiali 的 Graph 数据主要来自两个来源:Prometheus 和 Istio 本身的遥测数据。

  1. Prometheus:Prometheus 是一个开源监控和警报工具,它用于收集和存储 Istio 服务网格中的指标数据。Istio 使用 Envoy 代理收集遥测数据,这些数据随后被 Prometheus 抓取和存储。Kiali 使用这些 Prometheus 数据来生成服务之间的流量、错误率、延迟等指标。
  2. Istio 遥测数据:Istio 服务网格生成的遥测数据包括请求、响应、延迟以及 Envoy 代理的其他性能指标。这些数据由 Istio 组件(例如 Mixer 和 Pilot)以及 Envoy 代理本身生成。Kiali 从这些遥测数据中获取服务拓扑信息,以创建服务之间的依赖关系图。

Kiali 将这两个数据源的信息整合在一起,生成 Graph,它展示了服务网格的拓扑结构、服务之间的流量以及其他性能指标。这有助于用户更好地理解服务之间的依赖关系,发现潜在的性能问题,并优化服务网格配置。

查看Jaeger中链路追踪详情

  1. 暴露jaeger-query

image.png

  1. 登录查看

image.png

  1. 查看详情

image.png

Kiali可能出现的问题

Kiali 一直显示 Empty Graph

可能失败的原因

如果你的 Kiali 一直显示 Empty Graph。请关注以下几种可能的情况:

  • 集群版本低于 1.23 ,需要升级 Kubernetes 集群。
  • 访问的地址不正确,没有配置对 /productpage 的访问地址,请求流量没有打入集群。
  • Pod 没有被注入 istio-proxy。

你可以在 Kiali 的 Workloads 查看每个负载的 Pod 信息,正常情况应当如下所示:

分布式链路追踪按钮跳转问题

点击下图分布式链路追踪按钮会出现问题
image.pngimage.png
查看jaeger-query组件svc,服务并没暴露,自行配置nodeport暴露方式
image.png

修改kiali的jaeger-query配置,使用暴露ip+port
image.png
将http://jaeger-query.istio-system.svc:16686修改为http://192.168.31.21:31051
image.png
重启kiali
image.png
访问测试:
image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/485155.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

后台的日志存储

日志乱象 日志是日常开发中最有可能被忽视&#xff0c;最容易被滥用的一个模块。被忽视是因为打日志实在是一个再简单不过的事&#xff0c;前人设计好了一个logback.xml&#xff0c;后面只需要依样画葫芦定义一个logger&#xff0c;随手一个info调用就搞定 &#xff0c;他甚至…

【Linux】普通用户sudo失败怎么办

普通用户&#xff0c;sudo失败报错怎么办 问题分析如何解决成功 问题分析 新建的普通用户sudo失败 sudo提权&#xff0c;是以root的身份执行命令。 当我们用sudo提升权限的时候&#xff0c;这里有个问题&#xff0c;Linux会提示我们输入当前普通用户的密码——这就有点不好。…

【FreeRTOS基础入门】软件定时器

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、软件定时器的介绍1.1 软件定时器的特性1.2 软件定时器的特性1.3 守护任务 二、软件定时器的使用2.1 回调函数2.2 创建定时器创建动态定时器创建静态定时器 …

R语言实现分位数回归和二次分位数回归

大家好&#xff0c;我是带我去滑雪&#xff01;新的一年&#xff0c;新的气象&#xff0c;在接下来的日子里我将继续和各位小伙伴们分享我在科研道路上&#xff0c;学习的一些知识&#xff01; 分位数回归和二次分位数回归是统计学中用于分析因变量与自变量之间关系的方法&…

Android14 InputManager-InputManagerService环境的构造

IMS分为Java层与Native层两个部分&#xff0c;其启动过程是从Java部分的初始化开始&#xff0c;进而完成Native部分的初始化。 □创建新的IMS对象。 □调用IMS对象的start&#xff08;&#xff09;函数完成启动 同其他系统服务一样&#xff0c;IMS在SystemServer中的ServerT…

c++ template-1

第一章 函数模版 1.1 初识模版 1.1.1定义模版 以下就是一个函数模板&#xff0c;它返回两个数之中的最大值&#xff1a; template<typename T> T max (T a, T b) { // 如果 b < a, 返回 a&#xff0c;否则返回 b return b < a ? a : b; } 模板参数是 typename T…

采用SSI技术的FPGA器件

9个关于SSI芯片的必知问题-腾讯云开发者社区-腾讯云 (tencent.com)https://cloud.tencent.com/developer/article/1530543

Docker硬件直通:如何在容器中高效利用GPU与硬盘资源

Docker硬件直通&#xff1a;如何在容器中高效利用GPU与硬盘资源 引言Docker基础容器与虚拟机的区别Docker的工作原理 访问服务器硬件资源概述为何需要在Docker容器中访问硬件资源可访问的硬件资源类型 在Docker中使用GPU配置Docker以使用宿主机的GPU资源安装NVIDIA Docker插件 …

【操作系统】磁盘存储空间的管理

实验5 磁盘存储空间的管理 一、实验目的 磁盘是用户存放程序和数据的存储设备&#xff0c;磁盘管理的主要目的是充分有效地利用磁盘空间。本实验模拟实现磁盘空间的分配与回收&#xff0c;使学生对磁盘空间的管理有一个较深入的理解。 二、实验内容 实验任务&#xff1a;用位…

企业计算机服务器中了crypt勒索病毒怎么办,crypt勒索病毒解密数据恢复

计算机服务器设备为企业的生产运营提供了极大便利&#xff0c;企业的重要核心数据大多都存储在计算机服务器中&#xff0c;保护企业计算机服务器免遭勒索病毒攻击&#xff0c;是一项艰巨的工作任务。但即便很多企业都做好的了安全运维工作&#xff0c;依旧免不了被勒索病毒攻击…

方法:Linux/Windows进程和端口如何相互求证

1. 问题描述 开发过程中&#xff0c;我们经常会遇到这样的情况&#xff1a; 服务A启动&#xff0c;提示端口被占用&#xff0c;导致服务无法正常工作&#xff0c;需要查看端口被哪个进程占用了。服务A启动&#xff0c;正常监听&#xff0c;等待连接、请求&#xff0c;但是第三…

Flutter NestedScrollView 内嵌视图滚动行为一致

Flutter NestedScrollView 内嵌视图滚动行为一致 视频 https://youtu.be/_h7CkzXY3aM https://www.bilibili.com/video/BV1Gh4y1571p/ 前言 上一节讲了 CustomScrollView &#xff0c;可以发现有的地方滚动并不是很连贯。 这时候就需要 NestedScrollView 来处理了。 今天会写…