我通过yum在rhel8.4系统上安装了kata2.1.0版本,当我需要在kata内核中启用该模块时,总是找不到,
[root@jump-rhel kata-pod]# oc get pod NAME READY STATUS RESTARTS AGE test-kata 0/1 ContainerCreating 0 24m
Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal AddedInterface 17s multus Add eth0 [10.131.0.243/23] from openshift-sdn Warning FailedCreatePodSandBox 0s kubelet Failed to create pod sandbox: rpc error: code = Unknown desc = CreateContainer failed: load_kernel_module return code: 1 stdout: stderr:modprobe: FATAL: Module mlx5_core not found in directory /lib/modules/4.18.0-372.16.1.el8_6.x86_64
test-kata.yaml
apiVersion: v1 kind: Pod metadata: name: test-kata annotations: io.katacontainers.config.agent.kernel_modules: "mlx5_core" spec: runtimeClassName: kata terminationGracePeriodSeconds: 0 containers: - name: test-kata image: harbor.test.local/mirror/busybox:latest command: ["/bin/sh", "-c", "sleep inf"] securityContext: runAsUser: 0 volumeMounts: - name: modules mountPath: /lib/modules volumes: - name: modules hostPath: path: /lib/modules type: Directory
当我不使用注释时,在pod中手动modprobe mlx5core没有问题,模块可以加载到内核中。
我的环境是openshift4.9+rhel8.4(worker),我通过yum安装kata容器,默认版本是2.1.0-6,kata使用的内核版本与主机内核版本相同,所以我通过dockerfile将host/lib/module打包到kata容器中
kata-pod被调度到worker3节点,内核版本如下
[root@worker3 dockerfile]# uname -r 4.18.0-372.16.1.el8_6.x86_64
[root@jump-rhel ~]# oc exec -it test-kata sh -n test-kata / # uname -r 4.18.0-372.16.1.el8_6.x86_64
原提问者GitHub用户fu7100 如对项目有进一步反馈,请在 GitHub 提交 issue https://github.com/kata-containers/kata-containers/issues
这可能是因为在Kata容器中,模块依赖的内核版本与主机内核版本不同,因此您需要重新编译特定版本的模块,以便在Kata容器中使用。以下是解决此问题的可能方法:
重新编译模块 您可以在Kata容器中安装相应的内核源代码,然后使用指定的内核版本重新编译模块。您可以使用公共存储库或私有存储库中的源代码。使用以下命令安装内核源代码: yum install kernel-devel-$(uname -r) kernel-headers-$(uname -r) 然后使用以下命令重新编译模块:
make -C /usr/src/kernels/$(uname -r) M=/path/to/module/directory modules 最后将生成的.ko文件复制到Kata容器中。
更新内核版本 您也可以考虑更新Kata容器中的内核版本,以便与主机内核版本匹配。在Dockerfile中定义Kata容器时,您可以通过指定FROM语句来选择不同的基础映像。 例如,您可以使用以下命令选择不同的基础映像和内核版本:
FROM katacontainers/kernel:5.10.0-rc2-x86_64 这将使用Kata容器的自定义内核版本,该版本可以与主机内核版本匹配,并且您不必重新编译相应的模块。
请注意,更新内核版本可能会导致其他问题,请确保在更新内核版本之前进行全面测试。
Kata-guest操作系统使用的映像与容器映像不同。您可以通过本指南建立自己的形象。
https://github.com/kata-containers/kata-containers/tree/main/tools/osbuilder
原回答者GitHub用户liubin 如对项目有进一步反馈,请在 GitHub 提交 issue https://github.com/kata-containers/kata-containers/issues
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。