3.3. 部署 eBPF 程序
作为集群管理员,您可以使用 eBPF Manager Operator 部署容器化 eBPF 应用程序。
对于此流程中部署的 eBPF 程序示例,示例清单执行以下操作:
首先,它创建基本的 Kubernetes 对象,如 Namespace
、ServiceAccount
和 ClusterRoleBinding
。它还创建一个 XdpProgram
对象,它是 eBPF Manager 提供的自定义资源定义(CRD) 来加载 eBPF XDP 程序。每种程序类型都有自己的 CRD,但它们的作用类似。如需更多信息,请参阅在 Kubernetes 上加载 eBPF 程序。
其次,它会创建一个守护进程集,运行一个用户空间程序,该程序读取 eBPF 程序生成的 eBPF 映射信息。此 eBPF 映射是使用 Container Storage Interface (CSI) 驱动程序挂载的卷。通过在容器中挂载 eBPF 映射来实现在主机上访问它的效果,应用程序 pod 可以在没有特权的情况下访问 eBPF 映射。有关如何配置 CSI 的更多信息,请参阅在 Kubernetes 上部署 eBPF 的应用程序。
eBPF Manager Operator 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
3.3.1. 部署容器化的 eBPF 程序 复制链接链接已复制到粘贴板!
作为集群管理员,您可以将 eBPF 程序部署到集群中的节点。在此过程中,在 go-xdp-counter
命名空间中安装了一个容器化的 eBPF 程序示例。
先决条件
-
已安装 OpenShift CLI(
oc
)。 - 有管理员特权的帐户。
- 已安装 eBPF Manager Operator。
流程
要下载清单,请输入以下命令:
curl -L https://github.com/bpfman/bpfman/releases/download/v0.5.1/go-xdp-counter-install-selinux.yaml -o go-xdp-counter-install-selinux.yaml
$ curl -L https://github.com/bpfman/bpfman/releases/download/v0.5.1/go-xdp-counter-install-selinux.yaml -o go-xdp-counter-install-selinux.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要部署示例 eBPF 应用程序,请输入以下命令:
oc create -f go-xdp-counter-install-selinux.yaml
$ oc create -f go-xdp-counter-install-selinux.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要确认 eBPF 示例应用程序已被成功部署,请输入以下命令:
oc get all -o wide -n go-xdp-counter
$ oc get all -o wide -n go-xdp-counter
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要确认示例 XDP 程序正在运行,请输入以下命令:
oc get xdpprogram go-xdp-counter-example
$ oc get xdpprogram go-xdp-counter-example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME BPFFUNCTIONNAME NODESELECTOR STATUS go-xdp-counter-example xdp_stats {} ReconcileSuccess
NAME BPFFUNCTIONNAME NODESELECTOR STATUS go-xdp-counter-example xdp_stats {} ReconcileSuccess
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要确认 XDP 程序正在收集数据,请输入以下命令:
oc logs <pod_name> -n go-xdp-counter
$ oc logs <pod_name> -n go-xdp-counter
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<pod_name>
替换为 XDP 程序 pod 的名称,如go-xdp-counter-ds-4m9cw
。输出示例
2024/08/13 15:20:06 15016 packets received 2024/08/13 15:20:06 93581579 bytes received ...
2024/08/13 15:20:06 15016 packets received 2024/08/13 15:20:06 93581579 bytes received ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow