$ 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
作为集群管理员,您可以使用eBPF Manager Operator部署容器化eBPF应用程序。
对于在此过程中部署的示例eBPF程序,示例清单执行以下操作
首先,它创建基本的 Kubernetes 对象,例如Namespace
、ServiceAccount
和ClusterRoleBinding
。它还会创建一个XdpProgram
对象,这是一个由 eBPF Manager 提供的自定义资源定义 (CRD),用于加载 eBPF XDP 程序。每种程序类型都有其自己的 CRD,但它们的功能相似。更多信息,请参见在 Kubernetes 上加载 eBPF 程序。
其次,它创建一个守护程序集,运行一个用户空间程序,读取 eBPF 程序正在填充的 eBPF 映射。此 eBPF 映射使用容器存储接口 (CSI) 驱动程序进行卷挂载。通过将 eBPF 映射卷挂载到容器中,而不是访问主机上的映射,应用程序 pod 可以访问 eBPF 映射而无需特权。有关如何配置 CSI 的更多信息,请参见在 Kubernetes 上部署启用 eBPF 的应用程序。
eBPF Manager Operator 仅为技术预览功能。技术预览功能不受 Red Hat 生产服务级别协议 (SLA) 的支持,并且可能功能不完整。Red Hat 不建议在生产环境中使用它们。这些功能可让您抢先体验即将推出的产品功能,使客户能够在开发过程中测试功能并提供反馈。 有关 Red Hat 技术预览功能的支持范围的更多信息,请参见技术预览功能支持范围。 |
作为集群管理员,您可以将 eBPF 程序部署到集群中的节点。在此过程中,一个示例容器化 eBPF 程序将安装在go-xdp-counter
命名空间中。
您已安装 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
要部署示例 eBPF 应用程序,请输入以下命令
$ oc create -f go-xdp-counter-install-selinux.yaml
namespace/go-xdp-counter created
serviceaccount/bpfman-app-go-xdp-counter created
clusterrolebinding.rbac.authorization.k8s.io/xdp-binding created
daemonset.apps/go-xdp-counter-ds created
xdpprogram.bpfman.io/go-xdp-counter-example created
selinuxprofile.security-profiles-operator.x-k8s.io/bpfman-secure created
要确认 eBPF 示例应用程序已成功部署,请输入以下命令
$ oc get all -o wide -n go-xdp-counter
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
pod/go-xdp-counter-ds-4m9cw 1/1 Running 0 44s 10.129.0.92 ci-ln-dcbq7d2-72292-ztrkp-master-1 <none> <none>
pod/go-xdp-counter-ds-7hzww 1/1 Running 0 44s 10.130.0.86 ci-ln-dcbq7d2-72292-ztrkp-master-2 <none> <none>
pod/go-xdp-counter-ds-qm9zx 1/1 Running 0 44s 10.128.0.101 ci-ln-dcbq7d2-72292-ztrkp-master-0 <none> <none>
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE CONTAINERS IMAGES SELECTOR
daemonset.apps/go-xdp-counter-ds 3 3 3 3 3 <none> 44s go-xdp-counter quay.io/bpfman-userspace/go-xdp-counter:v0.5.0 name=go-xdp-counter
要确认示例 XDP 程序正在运行,请输入以下命令
$ oc get xdpprogram go-xdp-counter-example
NAME BPFFUNCTIONNAME NODESELECTOR STATUS
go-xdp-counter-example xdp_stats {} ReconcileSuccess
要确认 XDP 程序正在收集数据,请输入以下命令
$ oc logs <pod_name> -n go-xdp-counter
将<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:09 19284 packets received
2024/08/13 15:20:09 99638680 bytes received
2024/08/13 15:20:12 23522 packets received
2024/08/13 15:20:12 105666062 bytes received
2024/08/13 15:20:15 27276 packets received
2024/08/13 15:20:15 112028608 bytes received
2024/08/13 15:20:18 29470 packets received
2024/08/13 15:20:18 112732299 bytes received
2024/08/13 15:20:21 32588 packets received
2024/08/13 15:20:21 113813781 bytes received