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.pswp.cn/news/696903.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/696903.shtml
英文地址,請注明出處:http://en.pswp.cn/news/696903.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

音頻聲波的主觀感受

一、響度 聲壓是“客觀”的&#xff0c;響度是“主觀”的。 響度又稱音量。人耳感受到的聲音強弱&#xff0c;它是人對聲音大小的一個主觀感覺量。響度的大小決定于聲音接收處的波幅&#xff0c;就同一聲源來說&#xff0c;波幅傳播的愈遠&#xff0c;響度愈小…

React18原理: React核心對象之Update、UpdateQueue、Hook、Task對象

Update 與 UpdateQueue 對象 1 ) 概述 在fiber對象中有一個屬性 fiber.updateQueue是一個鏈式隊列&#xff08;即使用鏈表實現的隊列存儲結構&#xff09;是和頁面更新有關的 2 &#xff09;Update對象相關的數據結構 // https://github.com/facebook/react/blob/v18.2.0/pa…

【Nginx】Nginx配置反向代理 和 https

nginx.conf配置 進入linux /etc/nginx/ 打開nginx.conf 進行以下配置 http {include mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65;server {#監聽443端口listen 443 ssl;#你的域名server_name huiblog.top;#ssl證書的pe…

VSCode The preLaunchTask ‘C/C++: clang++ 生成活動文件‘ terminated with exit code -1

更改tasks.json文件里面的type為shell 選擇g 選擇g&#xff0c;然后點回到text.c&#xff0c;按下F5. 得到結果。 文中內容參考: 從零開始手把手教你配置屬于你的VS Code_嗶哩嗶哩_bilibili https://blog.csdn.net/qq_63872647/article/details/128006861

【EasyV】QGIS轉換至EasyV

QGIS轉換至EasyV 第一步&#xff1a;導入QGIS第二步 坐標系轉換第三步 集合修正第四步 重命名字段第五步 導出WGS geojson坐標第六步 導入EasyV 第一步&#xff1a;導入QGIS 第二步 坐標系轉換 第三步 集合修正 第四步 重命名字段 第五步 導出WGS geojson坐標 第六步 導入EasyV…

【es6】模版字面量/模版字符串,標簽函數/String.raw()靜態方法

模版字符串經常用&#xff0c;但是這個標簽函數的功能你肯定不知道&#xff0c;請看官網文檔 看完你需要知道 可以自定義標簽函數String.raw 的用法 唯一一個內置的模版字符串標簽函數第一個參數具有 raw 屬性的對象&#xff0c;值時一個類數組字符串對象模版字面量的緩存機制…

【vue vue-seamless-scroll】解決vue-seamless-scroll鼠標懸浮才滾動或者只滾動一次就失效的問題

解決問題&#xff1a;使用vue-seamless-scroll發現只有鼠標懸浮上去才滾動&#xff0c;而且滾動一次停止了 目標效果&#xff1a; 解決方案&#xff1a; 最后發現是因為數據需要在頁面掛載好就賦值&#xff0c;否則頁面在加載完成后&#xff0c;數據無法自動滾動。但因為數據…

c++:藍橋杯的基礎算法2(構造,模擬)+練習鞏固

目錄 構造 構造的基礎概念&#xff1a; 模擬 練習1&#xff1a;掃雷 練習2&#xff1a;灌溉 練習3&#xff1a;回文日期 構造 構造的基礎概念&#xff1a; 構造算法是一種用于解決特定問題的算法設計方法。在C語言中&#xff0c;構造算法通常涉及到創建一個函數或類來實…

ARM服務器上部署zookeeper集群

由于ARM服務器上部署zookeeper集群,會存在加載不到主類問題,現在把遇到的問題進行總結下,問題如下: [rootnode206 apache-zookeeper-3.5.10]# bin/zkServer.sh start ZooKeeper JMX enabled by default Using config: /data1/software/apache-zookeeper-3.5.10/bin/../conf/…

四、Burpsuite工具之proxy模塊詳解-intercept功能

前言&#xff1a; 過了一個年&#xff0c;感覺好久都沒有更新了&#xff0c;今天就從burpsuite的更新開始吧。 前面已經說過了burpsuite的安裝和proxy代理的配置&#xff0c;今天說一下proxy模塊中非常有用的intercept功能。 intercept功能介紹&#xff1a; intercept是攔截…

Spring之AOP源碼解析(中)

前言 在上一篇文章中,我們講解了Spring中那些注解可能會產生AOP動態代理,我們通過源碼發現,完成AOP相關操作都和ProxyFactory這個類有密切關系,這一篇我們將圍繞這個類繼續解析 演示 作用 ProxyFactory采用策略模式生成動態代理對象,具體生成cglib動態代理還是jdk動態代理,…

算法提升——LeetCode第385場周賽總結

題目 統計前后綴下標對 I 給你一個下標從0開始的字符串數組words。 定義一個布爾函數isPrefixAndSuffix&#xff0c;它接受兩個字符串參數str1和str2&#xff1a; 當str1同時是str2的前綴&#xff08;prefix&#xff09;和后綴&#xff08;suffix&#xff09;時&#xff0c…

APP的UI自動化demo(appium+java)

文章目錄 appium連接手機java代碼實現-第一版第二版-接入testng和隱式等待顯示等待 appium連接手機 準備工作 1、查看連接手機模擬器是否連接成功&#xff0c;獲取設備名稱 執行命令&#xff1a;adb devices 2、查看android內核版本號—>paltformVersion 執行命令&#xf…

MQL語言實現單元測試

文章目錄 一、單元測試是什么二、單元測試的過程三、為什么需要單元測試四、MQL測試代碼實現 一、單元測試是什么 單元測試是對軟件中最小可測單元&#xff08;如類或函數&#xff09;進行獨立驗證和檢查的過程。它是由開發工程師完成的&#xff0c;旨在確保每個單元的功能和邏…

Postman接口關聯實戰解析

在使用postman做接口測試時&#xff0c;有時候后面的接口需要獲取前面接口的某一個返回值做為請求參數&#xff0c;這時就可以使用關聯。 如從A接口提取出a字段的值&#xff0c;供B接口的b字段使用。 一個接口的返回報文如下&#xff1a; {"retCode": "0&quo…

SwiftUI 集合視圖(Grid)拖放交換 Cell 的極簡實現

概覽 自從 SwiftUI 橫空出世那天起&#xff0c;小伙伴們都感受到了它驚人的簡單與便捷。而在本課中&#xff0c;我們將會用一個小“栗子”更直觀的讓大家體驗到它無與倫比簡潔的描述性特質&#xff1a; 如上圖所示&#xff0c;我們在 SwiftUI 中實現了 Grid 中拖放交換 Cell 的…

基于SpringBoot + Layui的社區物業管理系統

項目介紹 社區物業管理系統是基于java編程語言&#xff0c;springboot框架&#xff0c;idea工具&#xff0c;mysql數據庫進行開發&#xff0c;本系統分為業主和管理員兩個角色&#xff0c;業主可以登陸系統&#xff0c;查看車位費用信息&#xff0c;查看物業費用信息&#xff0…

2個wordpress優化SEO主題模板

SEO優化wordpress主題 簡潔的SEO優化wordpress主題&#xff0c;效果好不好&#xff0c;結果會告訴你&#xff0c;適合SEO公司使用的主題。 https://www.jianzhanpress.com/?p2804 SEO優化海外WordPress主題 簡潔的SEO優化海外服務商WordPress主題&#xff0c;為中國制造202…

C# byte[]、struct、intptr、byte[]和byte*等的相互轉換

struct、byte[]互相轉換 //struct轉換為byte[] public static byte[] StructToBytes(object structObj) {int size Marshal.SizeOf(structObj);IntPtr buffer Marshal.AllocHGlobal(size);try{Marshal.StructureToPtr(structObj, buffer, false);byte[] bytes new byte[siz…