首页 > 其他分享 >eBPF 容器持久化map到宿主机上

eBPF 容器持久化map到宿主机上

时间:2024-07-11 09:32:31浏览次数:10  
标签:map fs bpf 容器 mount 宿主机 sys eBPF 挂载

问题现象

k8s上启动pod后,使用主机网络的容器,加载eBPF程序到网口上,持久化map只能保存在容器文件系统/sys/fs/bpf中。容器复位后,新容器与原来eBPF程序使用的不是同一个map。

问题分析

新容器使用新的文件系统,无法找回原来的/sys/fs/bpf挂载点,需要持久化到宿主机上。

k8s挂载传播,实现了共享卷挂载,即在宿主机或者容器挂载目录中再mount别的挂载。

mountPropagation取值

含义

None

默认,不传播挂载,只是绑定挂载。

HostToContainer

宿主机上挂载点继续mount,容器可见。

Bidirectional

容器需要开启特权。

容器上挂载点继续mount,宿主机可见。

cilium的实现

initContainer中执行mount | grep "/sys/fs/bpf type bpf" || mount -t bpf bpf /sys/fs/bpf。

解决问题

业务容器中执行mount | grep "/sys/fs/bpf type bpf" || mount -t bpf bpf /sys/fs/bpf。

containers:
- name: xxx
	image: xxx
	securityContext:
	  privileged: true
	volumeMounts:
	- name: test
	  mountPath: /sys/fs/bpf
	  mountPropagation: Bidirectional
volumes:
- name: test
  hostPath:
	path: /sys/fs/bpf

 

标签:map,fs,bpf,容器,mount,宿主机,sys,eBPF,挂载
From: https://www.cnblogs.com/WJQ2017/p/18295410

相关文章

  • eBPF 用户态和内核态基于ringbuf交互
    相比于perf_event_array,ringbuf优势在于1.读取数据是有序的,即提交顺序和消费顺序保持一致。2.避免数据复制,即提交数据到map和传递到用户态都不需要拷贝。内核态ringbuf/ringbuf.c#include"../headers/vmlinux.h"#include"../headers/bpf_endian.h"#include"../headers/b......
  • Kotlin小技巧之用Transformations.map方法转换LiveData
    本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点在Kotlin中,transformations.map是用于将一个LiveData的数据进行转换的拓展函数,它属于AndroidArchitectureComponents中的LiveData转换部分。这个函数允许你......
  • HashMap和ConcurrentHashMap的底层实现原理
    (1)HashMap底层实现原理在JDK1.7版本之前,HashMap数据结构是数组和链表,HashMap通过哈希算法将元素的键(Key)映射到数组中的槽位(Bucket)。如果多个键映射到同一个槽位,它们会以链表的形式存储在同一个槽位上,因为链表的查询时间是O(n),所以冲突很严重,一个索引上的链表非常长,......
  • js高级之-new map()
    newmap() JavaScript中的对象,实质就是键值对的集合,但是在对象里却只能用字符串作为键名。在一些特殊的场景里就满足不了我们的需求了,正因为此,Map 任何值(对象或者原始值)都可以作为一个键名或一个值letm=newMap();m.set([1,2],'张三')//输出为{[1,2]:张三}......
  • 【JS】 简单回忆一下 Set 和 Map
    ES6引入了两种新的数据结构:Set和Map。它们提供了一种存储键值对的方式,但与传统的对象(Object)和数组(Array)有所不同。SetSet是一种特殊的类型,它类似于数组,但成员的值都是唯一的,没有重复的值。使用Set创建Setletset=newSet();添加元素使用add()方法添加元素......
  • 【转】-Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
    Java并发编程:CountDownLatch、CyclicBarrier和Semaphore该博客转载自​Matrix海子​的​Java并发编程:CountDownLatch、CyclicBarrier和Semaphore在java1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下......
  • 【转】-Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
    Java并发编程:CountDownLatch、CyclicBarrier和Semaphore该博客转载自​Matrix海子​的​Java并发编程:CountDownLatch、CyclicBarrier和Semaphore在java1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下......
  • [Java基础]HashMap
    HashMapHashMap的数据结构HashMap是:数组+链表/红黑树(JDK1.8增加了红黑树部分)数据底层具体存储的是什么?Node<k,v>这样的存储方式有什么优点呢?数据结构//默认初始容量(数组默认大小):16,2的整数次方staticfinalintDEFAULT_INITIAL_CAPACITY=1<<4;//最大......
  • vmware禁止虚拟主机开启后自动时间同步到宿主机
    编辑虚拟机VMX配置文件找到tools.syncTime="FALSE"并在该行下添加如下七行,注意标点符号time.synchronize.continue="FALSE"time.synchronize.restore="FALSE"time.synchronize.resume.disk="FALSE"time.synchronize.shrink="FALSE"......
  • MyBatisPlus的Mapper.xml入参List执行in函数
    使用情景这个是开发过程中比较常见的情景,入参一个list,在Mapper.xml里面执行sql的in函数,今天来记录下这个问题,希望可以给大家一点帮助启发。Mapper文件解决方案xml文件<selectid="get"resultType="com.vo.tVo">SELECTnameFROMus......