Linkerd 2.10(Step by Step)—控制平面调试端点
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
公众号:黑客下午茶
加我微信(互相学习交流),关注公众号(获取更多学习资料~)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗