自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Linkerd 2.10(Step by Step)之使用 Linkerd 進行分布式跟蹤

開發(fā) 前端 分布式
在實踐中使用分布式跟蹤可能很復(fù)雜, 為了從高層次解釋您得到了什么以及它是如何完成的, 我們整理了一個list of myths。

[[406175]]

Linkerd 2.10 中文手冊持續(xù)修正更新中:

https://linkerd.hacker-linner.com

在實踐中使用分布式跟蹤可能很復(fù)雜, 為了從高層次解釋您得到了什么以及它是如何完成的, 我們整理了一個list of myths。

本指南將引導(dǎo)您完成 emojivoto 的配置和啟用跟蹤。關(guān)于使用 Linkerd 使用分布式跟蹤的最佳方式的一些建議,請?zhí)阶詈蟆?/p>

要使用分布式跟蹤,您需要:

  • 安裝 Linkerd-Jaeger 擴展。
  • 修改您的應(yīng)用程序以發(fā)出跨度。

在 emojivoto 的情況下,一旦所有這些步驟都完成,就會有一個看起來像這樣的拓?fù)洌?/p>

先決條件

  • 要使用本指南,您需要在集群上安裝 Linkerd。如果您還沒有這樣做,請按照安裝 Linkerd 指南進行操作。

安裝 Linkerd-Jaeger 擴展

獲取分布式跟蹤設(shè)置的第一步是將 Linkerd-Jaeger 擴展安裝到您的集群上。這個擴展由一個收集器(collector)、一個 Jaeger 后端和一個 Jaeger-injector 組成。收集器消耗從網(wǎng)格和您的應(yīng)用程序發(fā)出的跨度, 并將它們發(fā)送到 Jaeger 后端,后者存儲它們并提供儀表板以查看它們。Jaeger-injector 負(fù)責(zé)配置 Linkerd 代理以發(fā)出 span。

要安裝 Linkerd-Jaeger 擴展,請運行以下命令:

  1. linkerd jaeger install | kubectl apply -f - 

您可以通過運行以下命令來驗證 Linkerd-Jaeger 擴展是否已正確安裝:

  1. linkerd jaeger check 

安裝 Emojivoto

將 emojivoto 添加到您的集群并使用 Linkerd 代理注入它:

  1. linkerd inject https://run.linkerd.io/emojivoto.yml | kubectl apply -f - 

在進入下一步之前,請確保一切都已啟動并使用 kubectl 運行以下命令:

  1. kubectl -n emojivoto rollout status deploy/web 

修改應(yīng)用

與服務(wù)網(wǎng)格的大多數(shù)功能不同,分布式跟蹤需要修改應(yīng)用程序的源。跟蹤需要某種方式將傳入的請求與您的應(yīng)用程序與傳出的請求綁定到相關(guān)服務(wù)。為此,將向每個請求添加一些標(biāo)頭,其中包含跟蹤的唯一 ID。Linkerd 使用 b3 propagation 傳播格式將這些東西聯(lián)系在一起。

我們已經(jīng)修改了 emojivoto 以使用此信息檢測其請求,此 commit 顯示了這是如何完成的。對于大多數(shù)編程語言,它只需要添加一個客戶端庫來處理這個問題。Emojivoto 使用 OpenCensus 客戶端,但也可以使用其他客戶端。

要在 emojivoto 中啟用跟蹤,請運行:

  1. kubectl -n emojivoto set env --all deploy OC_AGENT_HOST=collector.linkerd-jaeger:55678 

此命令將添加一個環(huán)境變量,使應(yīng)用程序能夠傳播上下文并發(fā)出跨度。

探索 Jaeger

隨著 vote-bot 開始跟蹤每個請求,跨度現(xiàn)在應(yīng)該出現(xiàn)在 Jaeger。要進入 UI,運行:

  1. linkerd jaeger dashboard 

 

您可以在下拉列表中搜索任何服務(wù),然后單擊 Find Traces。vote-bot 是一個很好的入門方式。

單擊特定跟蹤將提供所有詳細信息,您將能夠看到每個代理的跨度!

該輸出中肯定有很多 linkerd-proxy 跨度。在內(nèi)部,代理具有服務(wù)器端和客戶端。當(dāng)請求通過代理時,由服務(wù)器接收,然后由客戶端發(fā)出。對于在兩個網(wǎng)狀 Pod 之間傳遞的單個請求,總共會有 4 個跨度。當(dāng)請求遍歷該代理時,兩個將在源端,當(dāng)遠程代理接收到請求時,兩個將在目標(biāo)端。

此外,由于代理添加了應(yīng)用元數(shù)據(jù)作為跟蹤屬性,用戶可以通過單擊度量表中的 Jaeger 圖標(biāo), 直接從 linkerd-web 儀表板直接跳轉(zhuǎn)到相關(guān)資源跟蹤,如下所示

清理

要進行清理,請通過運行以下命令卸載 Linkerd-Jaeger 擴展和 emojivoto:

  1. linkerd jaeger uninstall | kubectl delete -f - 
  2. kubectl delete ns emojivoto 

帶上你自己的 Jaeger

如果您有一個現(xiàn)有的 Jaeger 安裝, 您可以配置 OpenCensus 收集器向它發(fā)送跟蹤, 而不是 Linkerd-Jaeger 擴展中內(nèi)置的 Jaeger 實例。

  1. linkerd jaeger install --set collector.jaegerAddr='http://my-jaeger-collector.my-jaeger-ns:14268/api/traces' | kubectl apply -f - 

也可以手動編輯 OpenCensus 配置以將其導(dǎo)出到它支持的任何后端。有關(guān)完整列表,請參閱 OpenCensus 文檔。

故障排除

我沒有看到代理的任何跨度

Linkerd 代理使用 b3 propagation 傳播格式。一些客戶端庫,例如 Jaeger,默認(rèn)使用不同的格式。您需要將客戶端庫配置為使用 b3 格式讓代理參與跟蹤。

建議

Ingress

ingress 是分布式跟蹤的一個特別重要的組件,因為它創(chuàng)建每個跟蹤的根跨度, 并負(fù)責(zé)決定是否應(yīng)該對該跟蹤進行采樣。讓 ingress 做出所有采樣決策可確保對整個軌跡進行采樣或不采樣, 并避免創(chuàng)建“部分軌跡(partial traces)”。

分布式跟蹤系統(tǒng)都依賴于服務(wù)來傳播有關(guān)從接收到的請求到發(fā)送的請求的當(dāng)前跟蹤的元數(shù)據(jù)。這一元數(shù)據(jù)稱為跟蹤上下文,通常編碼在一個或多個請求標(biāo)頭中。有許多不同的跟蹤上下文標(biāo)頭格式,雖然我們希望生態(tài)系統(tǒng)最終會收斂于像 W3C tracecontext 跟蹤上下文這樣的開放標(biāo)準(zhǔn), 但我們今天只使用 b3 format。作為最早廣泛使用的格式之一,它具有最廣泛的支持,尤其是在 Nginx 等入口中。

此參考架構(gòu)包括一個簡單的 Nginx 配置,該配置對 50% 的跟蹤進行采樣并將跟蹤數(shù)據(jù)發(fā)送到 收集器(使用 Zipkin 協(xié)議)。任何入口控制器都可以在這里代替 Nginx 使用,只要它:

  • 支持概率采樣
  • 以 b3 格式編碼跟蹤上下文
  • 在 OpenCensus 收集器支持的協(xié)議中發(fā)出 span

如果使用 helm 安裝 ingress-nginx,您可以使用以下命令配置跟蹤:

  1. controller: 
  2.   config: 
  3.     enable-opentracing: "true" 
  4.     zipkin-collector-host: linkerd-collector.linkerd 

客戶端庫

雖然服務(wù)可以手動傳播跟蹤傳播標(biāo)頭,但使用執(zhí)行以下三件事的庫通常要容易得多:

  • 將跟蹤上下文從傳入請求頭傳播到傳出請求頭
  • 修改跟蹤上下文(即開始一個新的跨度)
  • 將此數(shù)據(jù)傳輸?shù)礁櫴占?/li>

我們建議在您的服務(wù)中使用 OpenCensus 并配置它:

  • b3 propagation (這是默認(rèn)設(shè)置)
  • the OpenCensus agent exporter

OpenCensus agent exporter 將通過 gRPC API 將跟蹤數(shù)據(jù)導(dǎo)出到 OpenCensus 收集器。如何配置 OpenCensus 的詳細信息會因語言而異,但有許多流行語言的指南。您還可以使用我們的示例應(yīng)用程序 Emojivoto 在 Go 中查看端到端示例。

您可能會注意到 OpenCensus 項目處于維護模式并將成為 OpenTelemetry 的一部分。不幸的是,OpenTelemetry 尚未準(zhǔn)備好投入生產(chǎn),因此 OpenCensus 仍然是我們目前的建議。

也可以使用許多其他跟蹤客戶端庫。只需確保正在使用 b3 傳播格式, 并且客戶端庫可以以收集器已配置為接收的格式導(dǎo)出其跨度。

收集器: OpenCensus

OpenCensus collector 從 OpenCensus agent exporter 接收跟蹤數(shù)據(jù), 并可能在將該數(shù)據(jù)發(fā)送到 Jaeger 之前進行轉(zhuǎn)換和過濾。將 OpenCensus exporter 發(fā)送到 OpenCensus collector 為我們提供了很大的靈活性:我們可以切換到 OpenCensus 支持的任何后端,而無需中斷應(yīng)用程序。

后端: Jaeger

Jaeger 是使用最廣泛的跟蹤后端之一,并且有充分的理由:它易于使用并且在可視化跟蹤方面做得很好。但是,可以改用 OpenCensus 支持的任何后端。

Linkerd

如果您的應(yīng)用程序注入了 Linkerd,Linkerd 代理將參與跟蹤并將跟蹤數(shù)據(jù)發(fā)送到 OpenCensus 收集器。這豐富了跟蹤數(shù)據(jù),并允許您準(zhǔn)確查看請求在代理和線路上花費的時間。

雖然 Linkerd 只能主動參與使用 b3 傳播格式的trace, 但 Linkerd 將始終透明地轉(zhuǎn)發(fā)未知的請求頭, 這意味著它永遠不會干擾使用其他傳播格式的 trace。

 

責(zé)任編輯:姜華 來源: 黑客下午茶
相關(guān)推薦

2021-06-22 06:24:57

Linkerd Ingress 流量網(wǎng)絡(luò)技術(shù)

2021-06-16 17:42:48

Linkerd 配置CPU

2021-06-17 06:20:43

Linkerd Kustomize網(wǎng)絡(luò)技術(shù)

2021-06-15 05:45:56

Linkerd annotations網(wǎng)絡(luò)技術(shù)

2021-06-22 06:16:24

Linkerd books webapp

2021-06-22 06:41:38

Linkerd 安裝多集群組件網(wǎng)絡(luò)技術(shù)

2021-06-17 06:13:29

Linkerd Prometheus 網(wǎng)絡(luò)技術(shù)

2021-06-24 07:20:21

Linked GitOps Argo CD

2021-06-15 05:52:33

Linkerd canary網(wǎng)絡(luò)技術(shù)

2021-06-16 06:31:55

Linkerd 2.1Step by SteWebhook TLS

2021-06-29 13:09:07

服務(wù)配置文件

2021-03-23 22:43:09

Grafana Tem分布式跟蹤開源

2022-09-04 21:17:03

高可用Linkerd

2011-04-19 14:02:09

SSAS

2022-02-18 09:30:48

分布式Spring應(yīng)用程序

2010-09-08 09:41:03

私有云部署

2022-08-21 07:17:16

LinkerdKubernetes服務(wù)網(wǎng)格

2021-12-08 17:54:55

架構(gòu)控制平面

2009-04-22 17:18:29

Vxworks驅(qū)動加載step by ste

2017-01-16 14:51:26

京東分布式服務(wù)CallGraph
點贊
收藏

51CTO技術(shù)棧公眾號