kubernetes-onload
kubernetes-onload
是由 Xilinx-CNS(现为 AMD)维护的开源项目,旨在将 OpenOnload® 或 EnterpriseOnload® 网络加速栈集成到 Kubernetes 和 OpenShift 集群中。该项目通过部署 Onload Operator 和 Device Plugin,使容器化应用能够利用 Solarflare 网卡的硬件加速功能,从而提升网络性能,降低延迟。(GitHub)
✨ 项目概述
- 目标:在 Kubernetes 或 OpenShift 集群中自动部署和管理 Onload 网络加速功能。
- 核心组件:
- Onload Operator:负责在集群中部署和管理 Onload 相关资源。
- Onload Device Plugin:向 Kubernetes 报告可用的加速设备,并协助调度使用这些设备的 Pod。
- 支持的环境:
- OpenOnload 或 EnterpriseOnload 版本 ≥ 8.1
- AMD Solarflare 网卡(驱动名为
sfc
) - OpenShift 4.10+(需安装 KMM Operator 1.1)
- Kubernetes 1.23+(支持有限,完整实现细节尚未提供) (GitHub)
🚀 功能亮点
- 自动化部署:Operator 自动完成 Onload 的安装、配置和升级,减少手动操作。
- 多网络插件支持:
- OpenShift/Multus:支持使用 MACVLAN 或 IPVLAN 创建的多网络接口。
- Kubernetes/Calico:支持无覆盖网络(non-overlay)配置,但不支持 Calico 的网络策略。
- 性能优化:通过绕过内核的网络栈,直接在用户空间处理网络 I/O,提高吞吐量并降低延迟。
- 兼容性:对现有使用 BSD sockets 的应用程序二进制兼容,无需修改应用代码即可获得加速效果。(AMD, GitHub)
⚙️ 部署要求与配置
- 硬件要求:AMD Solarflare XtremeScale X2 系列网卡。
- 软件要求:
- Linux 内核:支持 RHEL/RHCOS,需安装适配的内核模块。
- SELinux:在 RHEL/RHCOS 上运行时,需应用特定的 SELinux 策略更新。
- 网络配置:
- Calico:需配置为无封装模式(no encapsulation)。
- Multus:用于 OpenShift 的多网络插件,支持创建多个网络接口。
- 受限网络部署:在无法访问外部网络的环境中,可使用本地镜像部署 Operator 和 Device Plugin,具体步骤可参考官方文档。 (AMD, AMD 文档)
📦 项目结构
该项目主要使用 Go 语言编写,目录结构如下:
cmd/
:主程序入口。controllers/
:Operator 的控制器逻辑。api/v1alpha1/
:自定义资源定义(CRD)。pkg/
:辅助库和工具函数。config/
:部署配置文件和样例。docs/
:项目文档,包括网络附件定义(NAD)等。(AMD 文档)
📚 相关资源
- GitHub 仓库:Xilinx-CNS/kubernetes-onload
- Onload 用户指南:Onload User Guide
- 部署文档:Local Onload Operator Images in Restricted Networks(AMD, AMD 文档)