cilium-agent远程debug

2024-02-23 02:36
文章标签 debug 远程 agent cilium

本文主要是介绍cilium-agent远程debug,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 概述
  • 编译cilium-agent
  • 运行cilium-agent
  • 开启远程debug
  • 参考资料

概述

通过远程 debug,来分析 cilium-agent 是如何在容器创建的时候定义容器网络接口。

编译cilium-agent

首先是在本地编译 cilium-agent,下面是以 v1.14.4 的代码作为例子来阐述,这一步可以在本地的开发机中执行。

curl -LO https://github.com/cilium/cilium/archive/refs/tags/v1.14.4.zip
unzip v1.14.4.zip
cd cilium-v1.14.4/daemon
# 其中-gcflags="all=-N -l"是为了防止编译内联和优化导致无法远程debug
GOOS=linux GOARCH=amd64 go build -gcflags="all=-N -l" -o cilium-agent

运行cilium-agent

为了不重新打镜像,可以将重新编译后的 cilium-agent 放入到容器再启动。这里要 Hack 一下,把 cilium 的 DaemonSet 中的 cilium-agent 的容器改用 sleep inf 的方式启动,并且将几个探针都删除,避免容器会因为探针而重启,这些都操作完之后,就可以进入到容器中手动执行下面的命令,启动远程 debug。关于 dlv 就不赘述了,可以在本地编译再上传到容器。

dlv --listen=:12345 --headless=true --api-version=2 --accept-multiclient exec /usr/bin/cilium-agent -- --config-dir=/tmp/cilium/config-map

开启远程debug

在这里插入图片描述
注意上面填写的 IP 是运行 cilium-agent 的节点 IP,并且需要保证指定的端口是开放的,之后就可以进入 debug 的过程了,通过远程 debug,可以很清晰的了解 Cilium 是如何创建 Endpoint,以及如何将 eBPF 程序进行编译和 attach 到指定的网卡上的。

这里要注意,cilium-agent 启动失败,有可能会被 cilium-operator 标记一个 cilium-agent not ready 的污点,因此需要注意,如果在部署这个特殊的 cilium-agent 的时候,发现 Pod 无法正常运行,可以手动把节点上的污点去掉。

在这里插入图片描述

参考资料

  1. Cilium官方文档

这篇关于cilium-agent远程debug的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/737259

相关文章

使用Python实现局域网远程监控电脑屏幕的方法

《使用Python实现局域网远程监控电脑屏幕的方法》文章介绍了两种使用Python在局域网内实现远程监控电脑屏幕的方法,方法一使用mss和socket,方法二使用PyAutoGUI和Flask,每种方... 目录方法一:使用mss和socket实现屏幕共享服务端(被监控端)客户端(监控端)方法二:使用PyA

Agent开发核心技术解析以及现代Agent架构设计

《Agent开发核心技术解析以及现代Agent架构设计》在人工智能领域,Agent并非一个全新的概念,但在大模型时代,它被赋予了全新的生命力,简单来说,Agent是一个能够自主感知环境、理解任务、制定... 目录一、回归本源:到底什么是Agent?二、核心链路拆解:Agent的"大脑"与"四肢"1. 规划模

java程序远程debug原理与配置全过程

《java程序远程debug原理与配置全过程》文章介绍了Java远程调试的JPDA体系,包含JVMTI监控JVM、JDWP传输调试命令、JDI提供调试接口,通过-Xdebug、-Xrunjdwp参数配... 目录背景组成模块间联系IBM对三个模块的详细介绍编程使用总结背景日常工作中,每个程序员都会遇到bu

Java服务实现开启Debug远程调试

《Java服务实现开启Debug远程调试》文章介绍如何通过JVM参数开启Java服务远程调试,便于在线上排查问题,在IDEA中配置客户端连接,实现无需频繁部署的调试,提升效率... 目录一、背景二、相关图示说明三、具体操作步骤1、服务端配置2、客户端配置总结一、背景日常项目中,通常我们的代码都是部署到远程

Java实现远程执行Shell指令

《Java实现远程执行Shell指令》文章介绍使用JSch在SpringBoot项目中实现远程Shell操作,涵盖环境配置、依赖引入及工具类编写,详解分号和双与号执行多指令的区别... 目录软硬件环境说明编写执行Shell指令的工具类总结jsch(Java Secure Channel)是SSH2的一个纯J

Mac电脑如何通过 IntelliJ IDEA 远程连接 MySQL

《Mac电脑如何通过IntelliJIDEA远程连接MySQL》本文详解Mac通过IntelliJIDEA远程连接MySQL的步骤,本文通过图文并茂的形式给大家介绍的非常详细,感兴趣的朋友跟... 目录MAC电脑通过 IntelliJ IDEA 远程连接 mysql 的详细教程一、前缀条件确认二、打开 ID

一文详解Git中分支本地和远程删除的方法

《一文详解Git中分支本地和远程删除的方法》在使用Git进行版本控制的过程中,我们会创建多个分支来进行不同功能的开发,这就容易涉及到如何正确地删除本地分支和远程分支,下面我们就来看看相关的实现方法吧... 目录技术背景实现步骤删除本地分支删除远程www.chinasem.cn分支同步删除信息到其他机器示例步骤

Python远程控制MySQL的完整指南

《Python远程控制MySQL的完整指南》MySQL是最流行的关系型数据库之一,Python通过多种方式可以与MySQL进行交互,下面小编就为大家详细介绍一下Python操作MySQL的常用方法和最... 目录1. 准备工作2. 连接mysql数据库使用mysql-connector使用PyMySQL3.

Linux使用scp进行远程目录文件复制的详细步骤和示例

《Linux使用scp进行远程目录文件复制的详细步骤和示例》在Linux系统中,scp(安全复制协议)是一个使用SSH(安全外壳协议)进行文件和目录安全传输的命令,它允许在远程主机之间复制文件和目录,... 目录1. 什么是scp?2. 语法3. 示例示例 1: 复制本地目录到远程主机示例 2: 复制远程主

IDEA如何实现远程断点调试jar包

《IDEA如何实现远程断点调试jar包》:本文主要介绍IDEA如何实现远程断点调试jar包的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录问题步骤总结问题以jar包的形式运行Spring Boot项目时报错,但是在IDEA开发环境javascript下编译