Falco DaemonSet初始化容器异常求助:Helm部署eBPF遇404错误
解决Falco Helm部署初始化容器404错误的方案
核心原因分析
初始化容器的curl 404错误,本质是falco-driver-loader容器拉取匹配内核版本的eBPF驱动文件时,请求的资源路径不存在,常见触发场景:
- 节点内核版本过新/过旧,官方预编译驱动库无对应版本
- Helm values配置的驱动下载地址错误
- 集群节点无法访问官方驱动仓库(网络限制)
具体解决步骤
1. 核对内核版本与预编译驱动支持
登录集群任意节点,执行命令获取内核版本:
uname -r
若该版本不在Falco官方预编译驱动列表中,可开启现场编译eBPF驱动,在values.yaml中添加配置:
falco: driver: kind: ebpf compile: true
注意:开启编译需节点具备gcc、make等工具,若节点未预装,可通过values启用编译工具镜像,或提前在节点安装依赖。
2. 修正驱动下载地址配置
确认内核版本有对应预编译驱动后,检查values.yaml中的驱动仓库地址是否正确。默认地址为https://download.falco.org/driver,若网络访问受限,可切换至国内镜像源或自建仓库:
falco: driver: repository: "https://your-internal-mirror/falco-driver"
需确保仓库下存在对应内核版本的驱动文件(命名格式:falco-<内核版本>-<架构>.o)。
3. 检查并自定义初始化容器curl命令
查看Falco DaemonSet的初始化容器定义:
kubectl describe daemonset falco -n falco
定位falco-driver-loader容器的command,确认curl请求的URL是否正确。若路径有误,可通过values自定义命令:
falco: driver: initContainer: command: ["bash", "-c", "curl -fSL https://correct-repo/falco-$(uname -r)-$(uname -m).o -o /tmp/falco-driver.o"]
4. 处理网络访问限制
若节点无法访问外部仓库,可手动下载对应驱动文件,通过ConfigMap挂载到初始化容器:
# 本地下载驱动后创建ConfigMap kubectl create configmap falco-driver --from-file=falco-driver.o=/local/path/to/driver.o -n falco
在values.yaml中配置挂载:
falco: driver: kind: ebpf initContainer: extraVolumeMounts: - name: falco-driver mountPath: /tmp/falco-driver.o subPath: falco-driver.o extraVolumes: - name: falco-driver configMap: name: falco-driver
验证操作
修改配置后重新执行Helm升级:
helm upgrade falco falcosecurity/falco -n falco -f values.yaml
查看初始化容器日志确认结果:
kubectl logs -n falco <falco-pod-name> -c falco-driver-loader
内容的提问来源于stack exchange,提问作者Pablo
相关产品推荐
相关产品推荐

