kubectl apply设置自定义seccomp profile时提示找不到文件如何解决
核心错误原因
你混淆了seccomp profile的加载主体和读取路径:
容器创建阶段加载seccomp profile的是运行在宿主机节点上的kubelet/containerd组件,这个操作发生在容器启动之前,根本不会读取容器镜像内部的文件。报错中提到的/var/lib/kubelet/seccomp/是宿主机节点上kubelet的默认工作目录,不是容器内部路径,你把配置文件拷贝到容器镜像里的操作完全不生效。
你后续不配置seccomp时能在Pod里看到对应文件,只能证明镜像里的文件确实存在,但和kubelet加载seccomp的流程毫无关系。
正确配置方案
- 首先将
custom_profile.json分发到所有可能调度该Pod的集群节点的/var/lib/kubelet/seccomp/目录下,确保文件权限为644,kubelet进程有读取权限。如果集群节点数量多,可以自行编写DaemonSet实现配置文件的批量分发。 - 你当前Deployment YAML中的
seccompProfile配置本身没有问题,localhostProfile: custom_profile.json默认就是从节点的/var/lib/kubelet/seccomp/路径下读取同名文件,无需修改。 - 删除Dockerfile中拷贝seccomp profile的
COPY指令,该配置没有任何作用。
内容的提问来源于stack exchange,提问作者BrutalDev
相关产品推荐
相关产品推荐

