4.7. 使用树外模块替换树内模块
您可以使用内核模块管理(KMM)构建可按需载入或卸载到内核的内核模块。这些模块可以在不需要重启系统的情况下扩展内核的功能。模块可以配置为内置或动态加载。
动态加载的模块包括树内模块和树外(OOT)模块。in-tree 模块是 Linux 内核树的内部,即它们已经是内核的一部分。树外模块是 Linux 内核树的外部。它们通常是为开发和测试目的编写的,例如测试树级或处理不兼容的内核模块的新版本。
由 KMM 加载的一些模块可能会替换节点上已经载入的树内模块。要在载入模块前卸载树内模块,请将 .spec.moduleLoader.container.inTreeModulesToRemove
字段设置为您要卸载的模块。以下示例演示了所有内核映射的模块替换:
在本例中,moduleLoader
pod 使用 inTreeModulesToRemove
在 moduleLoader
镜像加载 mod_a
前卸载 in-tree mod_a
和 mod_b
。当 moduleLoader`pod 被终止,`mod_a
被卸载,则 mod_b
不会被再次加载。
以下是针对特定内核映射的模块替换示例:
4.7.1. 模块 CR 示例 复制链接链接已复制到粘贴板!
以下是一个注解的 Module
示例:
- 1 1 1
- 必需。
- 2
- 可选。
- 3
- 可选:在节点上将
/firmware/*
复制到/var/lib/firmware/
。 - 4
- 可选。
- 5
- 至少需要一个内核项。
- 6
- 对于运行与正则表达式匹配的内核的每个节点,KMM 创建一个
DaemonSet
资源,运行containerImage
中指定的镜像,使用${KERNEL_FULL_VERSION}
替换为内核版本。 - 7
- 对于任何其他内核,使用
my-kmod
ConfigMap 中的 Dockerfile 构建镜像。 - 8
- 可选。
- 9
- 可选:
some-kubernetes-secret
的值可以从位于/run/secrets/some-kubernetes-secret
的构建环境中获取。 - 10
- 此字段无效。在 kmod 镜像中构建 kmod 镜像或签名 kmod 时,您可能需要从提供由不可信证书颁发机构 (CA) 签名的证书的 registry 中拉取基础镜像。要让 KMM 信任该 CA,还必须通过替换集群的 CA 捆绑包来信任新的 CA。
请参阅"附加资源"以了解如何替换集群的 CA 捆绑包。
- 11
- 可选:避免使用此参数。如果设置为
true
,构建将在使用普通 HTTP 在 DockerfileFROM
指令中拉取镜像时跳过任何 TLS 服务器证书验证。 - 12
- 必需。
- 13
- 必需:包含带有密钥"证书"的公钥的 secret。
- 14
- 必需:包含带有密钥"密钥"的私有 secureboot 密钥的 secret。
- 15
- 可选:避免使用此参数。如果设置为
true
,则允许 KMM 检查容器镜像是否已使用普通 HTTP。 - 16
- 可选:避免使用此参数。如果设置为
true
,KMM 会在检查容器镜像是否已存在时跳过任何 TLS 服务器证书验证。 - 17
- 可选。
- 18
- 可选。
- 19
- 必需:如果存在设备插件部分。
- 20
- 可选。
- 21
- 可选。
- 22
- 可选。
- 23
- 可选:用于拉取模块加载程序和设备插件镜像。