intel/intel-iaa-pluginIntel Analytics Accelerator (IAA) 设备插件为 Kubernetes 提供了使用 Intel Analytics Accelerator (IAA) 进行加速计算的能力。该插件能够发现 IAA 工作队列并将其作为节点资源呈现给 Kubernetes 集群。
IAA 插件和操作器可通过 initcontainer,借助 accel-config 工具,选择性地支持 IAA 设备和工作队列的配置。
以下部分详细介绍如何获取、构建、部署和测试 IAA 设备插件。
bash$ git clone [***]
要将 IAA 插件部署为 DaemonSet,需要先构建插件的容器镜像并确保节点可以访问该镜像。
使用以下命令通过 docker 构建本地容器镜像,镜像名为 intel/intel-iaa-plugin,标签为 devel:
bash$ cd ${INTEL_DEVICE_PLUGINS_SRC} $ make intel-iaa-plugin ... Successfully tagged intel/intel-iaa-plugin:devel
使用提供的示例 DaemonSet YAML 文件部署插件。默认的 kustomization 会按原样部署 YAML:
bash$ kubectl apply -k deployments/iaa_plugin daemonset.apps/intel-iaa-plugin created
项目包含一个示例 idxd initcontainer,用于配置 IAA 设备和工作队列(1 个引擎 / 1 个组 / 1 个工作队列(用户/专用)),部署命令如下:
bash$ kubectl apply -k deployments/iaa_plugin/overlays/iaa_initcontainer/
配置脚本和模板可根据需求进行自定义。
配置可以选择存储在 ProvisioningConfig ConfigMap 中,然后通过卷挂载传递给 initcontainer。通过将节点名通过 NODE_NAME 环境变量传递给 initcontainer,并通过 ConfigMap 卷挂载传递节点特定的配置文件,可以实现节点特定的配置。
创建自定义配置 ConfigMap:
bash$ kubectl create configmap --namespace=inteldeviceplugins-system intel-iaa-config --from-file=demo/iaa.conf
对于开发目的,有时需要在节点上手动部署插件。这种情况下,不需要构建完整的容器镜像,只需构建插件即可。
首先构建插件:
bash$ make iaa_plugin
直接在节点上运行插件:
bash$ sudo -E ./cmd/iaa_plugin/iaa_plugin device-plugin registered
通过搜索节点资源分配状态,可以验证插件是否已注册:
bash$ kubectl get nodes -o go-template='{{range .items}}{{.metadata.name}}{{"\n"}}{{range $k,$v:=.status.allocatable}}{{" "}}{{$k}}{{": "}}{{$v}}{{"\n"}}{{end}}{{end}}' | grep '^\([^ ]\)\|\( iaa\)' master iaa.intel.com/wq-user-dedicated: 2 iaa.intel.com/wq-user-shared: 10 node1 iaa.intel.com/wq-user-dedicated: 4 iaa.intel.com/wq-user-shared: 30
可以通过部署提供的 iaa-qpl-demo 测试镜像来测试插件是否正常工作。
构建包含 accel-config 测试的 Docker 镜像:
bash$ make iaa-qpl-demo ... Successfully tagged iaa-qpl-demo:devel
创建运行单元测试的 Pod:
bash$ kubectl apply -f ./demo/iaa-qpl-demo-pod.yaml pod/iaa-qpl-demo created
等待 Pod 完成:
bash$ kubectl get pods | grep iaa-qpl-demo iaa-qpl-demo 0/1 Completed 0 31m
如果 Pod 未能成功启动,可能是因为无法获取 IAA 资源,此时 Pod 将处于 Pending 状态:
bash$ kubectl get pods NAME READY STATUS RESTARTS AGE iaa-qpl-demo 0/1 Pending 0 7s
可以通过检查 Pod 的事件来确认:
bash$ kubectl describe pod iaa-qpl-demo | grep -A3 Events: Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning FailedScheduling 2m26s default-scheduler 0/1 nodes are available: 1 Insufficient iaa.intel.com/wq-user-dedicated, 1 Insufficient iaa.intel.com/wq-user-shared.
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务