Menu

目录

动态加载内核模块

功能描述

容器内业务可能依赖某些内核模块,可通过设置环境变量的方式,在系统容器启动前动态加载容器中业务需要的内核模块到宿主机,此特性需要配合isulad-hooks一起使用,具体使用可参看容器资源动态管理(isulad-tools)章节。

参数说明

命令

参数

参数指定值说明

lcrc create/run

-e KERNEL_MODULES=module_name1,module_name

  • 字符串变量。
  • 支持配置多个模块,模块名以逗号分隔。

约束限制

  • 如果加载的内核模块是未经过验证的,或者跟宿主机已有模块冲突的场景,会导致宿主机出现不可预知问题,在做加载内核模块时需要谨慎操作。
  • 动态加载内核模块通过将需要加载的内核模块传递给容器,此功能是依靠isulad-tools捕获到容器启动的环境变量实现,依赖isulad-tools的正确安装部署。
  • 加载的内核模块需要手动进行删除。

使用示例

启动系统容器时,指定-e KERNEL_MODULES参数,待系统容器启动后,可以看到ip_vs模块被成功加载到内核中。

[root@localhost ~]# lsmod | grep ip_vs
[root@localhost ~]# lcrc run -tid -e KERNEL_MODULES=ip_vs,ip_vs_wrr --hook-spec /etc/isulad-tools/hookspec.json --system-container --external-rootfs /root/myrootfs none init
ae18c4281d5755a1e153a7bff6b3b4881f36c8e528b9baba8a3278416a5d0980
[root@localhost ~]# lsmod | grep ip_vs
ip_vs_wrr              16384  0
ip_vs                 176128  2 ip_vs_wrr
nf_conntrack          172032  7 xt_conntrack,nf_nat,nf_nat_ipv6,ipt_MASQUERADE,nf_nat_ipv4,nf_conntrack_netlink,ip_vs
nf_defrag_ipv6         20480  2 nf_conntrack,ip_vs
libcrc32c              16384  3 nf_conntrack,nf_nat,ip_vs

说明:
- 宿主机需要安装isulad-tools。
- 需要指定–hooks-spec为isulad hooks。