Linkerd 2.10(Step by Step)—控制平面除錯端點
阿新 • • 發佈:2021-06-17
Linkerd 2.10 系列
- 快速上手 Linkerd v2 Service Mesh(服務網格)
- 騰訊雲 K8S 叢集實戰 Service Mesh—Linkerd2 & Traefik2 部署 emojivoto 應用
- 詳細瞭解 Linkerd 2.10 基礎功能,一起步入 Service Mesh 微服務架構時代
- Linkerd 2.10(Step by Step)—1. 將您的服務新增到 Linkerd
- Linkerd 2.10(Step by Step)—2. 自動化的金絲雀釋出
- Linkerd 2.10(Step by Step)—3. 自動輪換控制平面 TLS 與 Webhook TLS 憑證
Linkerd 2.10 中文手冊持續修正更新中:
所有控制平面元件(Grafana 除外)
都使用 Go 的 pprof 包
通過路徑 /debug/pprof
暴露執行時分析資訊。
您可以使用 go tool pprof
使用提供的資料以生成多種格式(PDF、DOT、PNG 等)的輸出。
提供了以下診斷(/debug/pprof
提供了帶連結的摘要):
allocs
: 過去所有記憶體分配的樣本block
: 導致同步原語阻塞的堆疊跟蹤cmdline
: 當前程式的命令列呼叫goroutine
: 所有當前goroutine
的堆疊跟蹤heap
: 活動物件的記憶體分配示例。您可以指定gc GET
引數以在獲取堆樣本之前執行GC
。mutex
: 競爭互斥鎖持有者的堆疊跟蹤profile
: CPU 配置檔案。您可以在seconds GET
引數中指定持續時間。
獲取配置檔案後,使用go tool pprof
命令調查配置檔案。threadcreate
: 導致建立新 OS 執行緒的堆疊跟蹤trace
: 當前程式的執行軌跡。您可以在seconds GET
引數中指定持續時間。
獲取跟蹤檔案後,使用go tool trace
命令調查跟蹤。
示例用法
此資料通過 admin-http
埠提供。要找到此埠,
您可以檢查 pod 的 yaml,或者對 identity pod,發出如下命令:
kubectl -n linkerd get po \
$(kubectl -n linkerd get pod -l linkerd.io/control-plane-component=identity \
-o jsonpath='{.items[0].metadata.name}') \
-o=jsonpath='{.spec.containers[*].ports[?(@.name=="admin-http")].containerPort}'
然後使用 kubectl port-forward
命令從叢集外部訪問該埠(在本例中,埠為 9990):
kubectl -n linkerd port-forward \
$(kubectl -n linkerd get pod -l linkerd.io/control-plane-component=identity \
-o jsonpath='{.items[0].metadata.name}') \
9990
現在可以使用 go tool
來檢查這些資料。
例如,在 PDF 檔案中生成描述記憶體分配的圖表:
go tool pprof -seconds 5 -pdf http://localhost:9990/debug/pprof/allocs
我是為少
微信:uuhells123
公眾號:黑客下午茶
加我微信(互相學習交流),關注公眾號(獲取更多學習資料~)