Kubernetes Pod应用性能识别工具 Kubectl Flame
在Kubernetes上如何分析应用性能? 应用性能分析是一项艰巨的任务。大多数探查器有两个主要问题: 需要修改应用程序。通常,可以通过将标志添加到执行命令或将一些性能分析库导入代码中来实现。 由于在性能分析过程中会严重影响性能,因此通常避免在产品中进行性能分析。 在Kubernetes集群中运行的应用程序上执行分析时,甚至更加困难。需要部署一个包含配置文件修改的新容器映像,而不是当前正在运行的容器。此外,当应用程序重新启动时,某些性能问题可能会消失,这使调试变得困难。 在Kubernetes应用性能分析解决方案? Kubernetes 中可以使用 Kubectl Flame 分析 Pod 应用性能。Kubectl Flame 是一个kubectl插件,可以使在Kubernetes中运行的分析应用程序获得流畅的体验,而无需进行任何应用程序修改或停机。另外,kubectl flame的目标是通过最大程度地降低性能损失来实现生产友好。 kubectl flame 在与目标容器相同的节点上启动 Kubernetes Job。在后台kubectl-flame使用async-profiler来为Java应用程序生成火焰图。通过共享/tmp文件夹与目标JVM进行交互。Golang支持基于ebpf分析。Python支持基于py-spy。 使用要求 支持的语言:Go,Java(任何基于JVM的语言)和 Python 使用Docker作为容器运行时的Kubernetes集群(已在GKE,EKS和AKS上测试) 安装 $ kubectl krew install flame 使用 分析 Kubernetes Pod 分析 Java 应用 mypod 1分钟,并在将火焰图保存到 /tmp/flamegraph.svg $ kubectl flame mypod -t 1m --lang java -f /tmp/flamegraph.svg 分析基于 alpine 操作系统的容器 在基于 alpine 的容器中分析 Java 应用程序需要使用 --alpine 标志 $ kubectl flame mypod -t 1m -f /tmp/flamegraph.svg --lang Java --alpine 注意:仅 Java 应用程序需要此 --alpine 标志,而 Go 分析则不需要该标志。 分析 sidecar 容器 包含多个容器的 Pod 需要将目标容器指定为参数 $ kubectl flame mypod -t 1m --lang go -f /tmp/flamegraph.svg mycontainer 分析 Golang 多进程容器 (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |