# vkernel-doc **Repository Path**: joyallen/vkernel-doc ## Basic Information - **Project Name**: vkernel-doc - **Description**: Documents for vkernel - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 3 - **Created**: 2025-01-14 - **Last Updated**: 2025-08-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Vkernel Container ![](/media/202410/2024-10-11_092606_1966410.8047790475303882.png) Vkernel旨在打破容器场景下的内核共享的局限性,实现容器独立的虚拟内核以完善隔离能力,同时兼顾容器性能。 ![](/media/202410/2024-10-11_094404_4246720.7893649963259353.png) # 架构 ![](/media/202411/2024-11-20_094455_9352300.8150411538391428.png) **安全隔离:** - 【基础功能】系统调用隔离:独立的系统调用表。 - 【基础功能】文件访问控制:基于inode的文件自定义访问规则。 - 【高级功能】数据隔离: - 内核数据隔离:隔离内核权限数据、内容数据 - 日志隔离:隔离容器的内核日志访问。 - 权限防护:保护权限控制数据,防止越权逃逸 - 用户数据隔离:隔离匿名映射、管道、RAMFS **功能定制:** - 【基础功能】内核参数隔离:独立的(/sys/, /proc/sys/等路径下)内核参数控制 - 内核资源用量限制:限制fd/inode等抽象内核资源用量 - 宏观资源策略并存:对CPU/内存等资源的调度或使用策略,容器可以各异 - 微观资源参数定制:容器可经性能调优后,独立设置合适的sysctl参数 (部分特性仍在内部迭代,尚未为开源准备好) # 优势 系统调用隔离: - 更加灵活的系统调用过滤。可用作seccomp的替代,可以有更多样的表现。如解引用指针参数,拦截非法调用同时记录日志,发现高频非法调用时告警。 - 快速修复内核漏洞。有些内核漏洞是缺乏边界检查造成的,简单修改容器系统调用表即可修复,无需更换内核。 - 特定调用加速。可专门为目标容器编写新的系统调用实现,以加速其高频系统调用。如分配专门的缓存,加速一些只读文件元数据的访问。 - 系统调用调试。可非常容易的新增系统调用,进行功能调试,无需重编译内核。 文件访问控制: - 更加高效的文件访问控制。可用作apparmor的替代,基于inode标记检索文件,更加高效可靠。针对频繁的非法访问,可以有更多样的自定义处理手段。 内核日志隔离: - 避免泄露敏感日志信息。主机或其他容器产生的内核日志可能包含敏感信息,不应泄露。 内核参数隔离: - 避免内核资源被恶意占用。如限制容器最大文件数,避免恶意容器过多占用fd。 - 冲突负载并存。如redis推荐overcommit_memory=1,而postgresql推荐设置为2,可分别独立配置。 - 特定负载性能调优。如mysql受益于透明大页访存,可单独设置thp enable=always,而主机保持madvise或never减少内存浪费。 # 开始 --------------- --------------- --------------- | container 1 | | container 2 | | container 3 | --------------- --------------- --------------- | ioctl -------------V------------------------------------- | | | -----/dev/vkernel------ ----------------- | | | API & Policies | <- | custom plugin | | | ------vkernel.ko------ ------vki.ko----- | | | | ---------------------------------------------- | | | basic isolation and customization (hooks) | | | ---------------------------------------------- | | | logical/physical data isolation | | | | (identify, pgtable, trust zone) | | | ---------------------------------------------- | | Host Kernel | --------------------------------------------------- **基础功能可以通过hotfix、inline hook等内核无侵入的方式实现,高级功能则需要修改内核**。 --- 安装组件: - 包含vkernel补丁的内核 - vkernel内核模块 - vkernel容器运行时 组件安装完毕后,即可按照常规容器运行时的方式配置docker/k8s等工具进行使用。 # 贡献 如果你对我们的项目感兴趣,欢迎在PR中提交!