×

作为集群管理员,您可以使用eBPF Manager Operator部署容器化eBPF应用程序。

对于在此过程中部署的示例eBPF程序,示例清单执行以下操作

首先,它创建基本的 Kubernetes 对象,例如NamespaceServiceAccountClusterRoleBinding。它还会创建一个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 程序部署到集群中的节点。在此过程中,一个示例容器化 eBPF 程序将安装在go-xdp-counter命名空间中。

先决条件
  • 您已安装 OpenShift CLI (oc)。

  • 您拥有具有管理员权限的帐户。

  • 您已安装 eBPF Manager Operator。

步骤
  1. 要下载清单,请输入以下命令

    $ 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
  2. 要部署示例 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
  3. 要确认 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
  4. 要确认示例 XDP 程序正在运行,请输入以下命令

    $ oc get xdpprogram go-xdp-counter-example
    示例输出
    NAME                     BPFFUNCTIONNAME   NODESELECTOR   STATUS
    go-xdp-counter-example   xdp_stats         {}             ReconcileSuccess
  5. 要确认 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