Kubernetes 中分析调试网络流量的4种方法.docx
《Kubernetes 中分析调试网络流量的4种方法.docx》由会员分享,可在线阅读,更多相关《Kubernetes 中分析调试网络流量的4种方法.docx(10页珍藏版)》请在优知文库上搜索。
1、摘要Kubernetes中的应用出了问题,往往需要进行网络抓包分析.本文介绍了在Kubernetes中网络调试分析的4种方法。-X-t-刖三在当今世界,分布式系统,微服务/SOA架构遍地,服务之间的许多交互和通信都不再是同一主机的不同线程或进程,而是跨主机,甚至跨网络区域。那么一旦相关服务出现问题,我们就会需要调试服务间的通讯、主机间的网络Kubernetes中的应用出了问题,往往需要进行网络抓包分析。本文介绍了在Kubernetes中网络调试分析的4种方法。1使用sidecar2、使用netshoot-一个DOCker+Kubemetes网络故障排除的瑞士军刀容器3、NetworkNames
2、pace4、使用kubectl插件-ksniff方法一:使用SidecarSidecar应用范围不仅仅止于此,比如:APM监控的agent就可以通过这种方式来挂载。Sidecar前来救援!在过去的几个月里,我尝试了各种方法来克服这个问题,最终形成了我将在本文中概述的方法。它是捕获KubernetesZOpenShiftpods之间的网络流量数据的简单方法,允许开发人员更好地分析和调试容器化应用程序中的通信问题,并更快、更有效地解决问题。我们将使用tcpdump捕获一个所谓的PCAP(packetCaPtUre)文件,该文件将包含pod的网络流量。然后可以将这个PCAP文件加载到Wireshar
3、k之类的工具中来分析流量,在本例中,分析在pod中运行的服务的RESTful通信。在本文中,我将使用RedHatProcessAutomationManager产品的KIE服务器(执行服务器)作为示例,但是这种方法应该适用于任何类型的容器化应用程序。要克服的第一个问题是Kubernetespod中tcpdump命令的可用性。KIE服务器容器映像没有安装tcpdumpo其次,容器不提供从RedHat存储库安装tcpdump的实用程序。为了克服这个问题,我们使用了“sidecar容器”的概念。Sidecar概念sidecar容器是与实际服务/应用程序运行在相同pod中的容器,能够为服务/应用程序提
4、供附加功能。SideCar容器的一个例子是Istio的Envoysidecar,它使POd成为服务网格的一部分。在本例中,我们将部署一个SideCar容器,该容器提供tcpdump实用程序。由于POd中的多个容器共享相同的网络层,所以我们可以使用sidecar来捕获进出KIE服务器的网络流量。部署Sidecar在这个例子中,我部署了RedHatProcessAutomationManager7MortgageDemo,它将在我的OpenShiftnamespace中创建两个pod。一个pod运行BusinessCentralworkbench,W一个POd是执行服务器的pod。这两个组件之间的
5、通信是通过REST完成的,这是我们将要捕获的流量。我们的目标是捕获KIE服务器pod上的网络流量,以便分析BusinessCentralworkbench发送给KIE服务器的RESTful命令。要做到这一点,我们首先需要附加(attach)一个sidecar到KIE服务器的pod.1、在OVerVieW页面中,单击要分析的pod的名称。这将打开一部署配置(DeploymentConfig,简称DC1.页面。2、在一部署配置_屏幕的音上角,单击AetiOnSEditYAM1.。这将打开DC的YAM1.配置。3、向下滚动,直到看到单词containers。我们将添加一个额外的容器,安装了tcpdu
6、mp的sidecar到pod中。直接在containers定义下添加以下YAM1.片段::tcpdumplMg:corfrtcpduaa7ortg9e-kleserverZme:rhpa7ortg9kesRrverspec:CCCtdIrlUrS:-nane:tcptfunpi*age:corfr/tcpdunpCOMMnd:-binsleep-infinity-CAV:-nw:DATASOURCESvalue:M必-M*:RHPDATABASEvalue:rhn74、保存配置。这将部署一个新的pod,它现在由两个容器组成:一个容器包含KIE服务器,另一个容器包含我们的tcpdump工具,它将
7、无限期地持续运行。捕获和分析流量随着SideCar的部署和运行,我们现在可以开始捕获数据了。我尝试的方法之一是使用OCrsh命令远程执行SideCar中的tcpdump命令,将网络数据流输出到FlFO文件,并将数据直接导入WireShark。由于各种原因,这种方法失败了。其中一个问题是,tcpdump向stderr发送信息消息,但是这些消息与stdout在相同的流中,并且是通过SSH接收,从而破坏了进入WireShark的数据。我最后使用的方法是登录到SideCar容器,并在sidecar中运行tcpdump命令来创建PCAP文件。当您捕获了足够的数据后,就可以停止捕获过程并将PCAP文件复制
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Kubernetes 中分析调试网络流量的4种方法 分析 调试 网络流量 方法
