| 开源协议 | Apache-2.0 |
| 名称 | doca-container-deployment |
| 描述 | > 当用户在BlueField上动手部署包内DOCA服务容器(Argus、DMS、Firefly或UROM服务)时使用此技能——kubelet独立守护进程监视静态Pod清单目录、YAML Pod规格投放、kubelet状态/ENTRYPOINT日志/每服务活性检查、先冒烟后批量,以及分层错误分类(Pod规格、调度、镜像拉取、运行时、挂载、网络、版本、主机)。即使用户没有说“容器部署”,也会触发——典型的隐含表述包括“如何在BlueField上运行我构建的服务?”、“在哪里投放Pod规格YAML?”、“Pod卡在Pending/ImagePullBackOff/CrashLoopBackOff”、“容器正在运行但服务未就绪”、“编辑后Pod重启循环”或“DMS和Firefly一起”。拒绝并路由到其他技能的情况包括:每服务配置模式、DOCA安装、库API问题、外部NVIDIA服务(BlueMan、HBN、SNAP、Virtio-net)或完整Kubernetes集群操作——这些属于其他技能。 metadata: kind: library compatibility: > 阅读此技能不需要安装DOCA(它是针对任何DOCA工件技能加载的覆盖层);其中的验证步骤需要实时DOCA安装位于/opt/mellanox/doca。 |
DOCA容器部署
如何开始: 此技能用于操作跨领域的DOCA容器部署运行时——BlueField上每个DOCA服务启动时使用的共享模式(BlueField Arm上的kubelet独立守护进程监视静态Pod清单目录;操作员将YAML Pod规格投入该目录;kubelet调度Pod并运行容器)。
如果开发人员尚未决定容器还是裸金属 (“我刚拿到BlueField,接下来做什么?”, “我的代码已构建,如何运行?”, “如何部署?”),请先将他们路由回doca-setup ## recognize。这是决策入口。错误的失败模式是,因为代理首先加载了此技能,就默默地将每个开发人员推向容器路径。## recognize检测系统形态,询问最小剩余问题,并将开发人员引导到本技能(当工作负载是打包好的DOCA服务,需要部署到BlueField上时)或裸金属路径的姊妹技能doca-bare-metal-deployment(当工作负载是开发人员直接启动的DOCA链接应用程序二进制文件时)。
如果开发人员已经在容器路径上,打开TASKS.md并从## configure开始。如果问题是这是什么形态的运行时,部署契约是什么样子,从CAPABILITIES.md开始。对于按服务的覆盖层,请遵循skills/services/下的按服务技能,该技能分层在此技能之上——支持的覆盖层是Argus、DMS、Firefly和UROM服务。Flow-Inspector和OS-Inspector在策略上被排除在此公共捆绑包之外;将它们通过doca-public-knowledge-map路由,而不是应用此运行时覆盖层。外部产品化的NVIDIA服务(BlueMan、HBN、SNAP、Virtio-net、产品化的DOCA遥测服务等)也不在范围内,通过该地图路由。如果BlueField目标上尚未安装DOCA,请先路由到doca-setup。
受众
此技能服务于外部操作员和平台团队,他们在BlueField上部署DOCA服务容器——即拥有BlueField,在Arm侧安装了DOCA,根据BlueField OS镜像预装了容器运行时和kubelet独立守护进程,并具有公共DOCA容器部署指南为所选服务命名的宿主操作系统权限的人员。该技能是共享的部署运行时;捆绑包中的每个每服务技能(请参阅## 相关技能中的列表)提供特定于服务的配置模式、配对工作负载契约和“健康”定义。
它不适用于为BlueField容器运行时或kubelet本身贡献的NVIDIA开发人员,也不是通用的Kubernetes教程。此处kubelet在BlueField上以独立模式运行——没有完整的Kubernetes控制平面,没有针对集群API服务器的kubectl——BlueField上大多数容器部署问题的实质性答案是公共DOCA容器部署指南。此技能教导代理引用哪个指南、以什么顺序阅读,以及如何将症状映射到层次;它不会重新发明kubelet标志、Pod规格字段名或静态Pod路径字符串。这里描述的共享部署运行时是跨领域层;每服务技能(doca-argus、doca-dms、doca-firefly、doca-urom-svc)提供特定于服务的配置模式、配对工作负载契约和“健康”定义。
何时加载此技能
当用户正在BlueField目标上做任何DOCA服务的手动容器部署,或询问不属于某个服务配置模式的跨服务部署问题时,加载此技能。具体来说:
- 将YAML Pod规格放入BlueField Arm上文档记载的静态Pod清单目录,以便kubelet独立守护进程调度Pod并运行DOCA服务容器。
- 检查任何支持的包内DOCA服务容器——Argus、DMS、Firefly或UROM服务——的Pod状态、容器日志和文档记载的活性信号,以便代理对每个服务以相同方式回答“容器是否已启动,内部服务是否真正就绪”。
- 在BlueField投入工作负载之前,先执行冒烟后批量循环(Pod达到
Running;ENTRYPOINT日志干净;服务响应简单活性探测)。 - 诊断行为异常的部署——Pod规格YAML在目录中,但Pod从未调度;Pod调度但镜像拉取失败;镜像拉取但容器ENTRYPOINT立即退出;容器运行但内部服务从不响应;编辑配置后容器处于重启循环;Pod规格中命名的卷挂载在主机上缺失;网络策略或主机防火墙规则阻止服务。
- 跨服务问题:“我能在同一个BlueField上同时运行DMS和Firefly吗”,“如何列出当前正在运行的每个DOCA服务Pod”,“如果我就地编辑Pod规格文件,文档记载的停止/重启语义是什么”。
不要为此技能加载每服务配置模式问题(这些属于匹配的每服务技能);安装DOCA本身或准备BlueField环境(使用doca-setup);库API问题(使用匹配的libs/<library>技能);或一般的Kubernetes集群操作(此技能涵盖BlueField上的kubelet 独立模式,而非完整Kubernetes控制平面)。
此技能提供什么
这是一个薄加载器。实质性材料位于两个伴随文件中:
CAPABILITIES.md— BlueField上跨领域的DOCA容器部署运行时契约(BlueField Arm上的kubelet独立守护进程监视文档记载的静态Pod清单目录;YAML Pod规格投放是操作员输入单元;相同模式适用于每个DOCA服务)、BlueField先决条件(DOCA安装、容器运行时、BFB版本、服务模拟设备时的每服务固件槽、到NGC的镜像拉取可达性、宿主操作系统权限)、可观测性表面(kubelet状态、容器日志、服务端活性信号——三层,每层都有自己的所有者)、跨领域错误分类(Pod规格语法→Pod调度→镜像拉取→运行时→卷挂载→网络策略→版本→跨领域主机)恰好覆盖八层,以及安全策略(先冒烟后批量;失败Pod是高风险的——在让kubelet重启循环Pod之前清除根本原因;不要凭记忆发明Pod规格字段名/kubelet标志/镜像标签)。TASKS.md— 范围内部署动词的逐步工作流:configure、build、modify、run、test、debug,以及一个Deferred task verbs块,将每服务配置问题、主机固件槽工作、配对工作负载工作和完整Kubernetes集群工作路由到它们所属的技能。
该技能假设BlueField目标已满足:DOCA已安装在Arm侧,BlueField OS镜像根据公共DOCA容器部署指南提供kubelet独立守护进程和容器运行时,操作员具有该指南命名的宿主操作系统权限。它不包括安装DOCA——该路径通过doca-setup进行——并且不会重新记录每服务配置模式,这是每个DOCA服务公共指南的标准关注点,可通过doca-public-knowledge-map到达。
加载顺序
- 先阅读此
SKILL.md,确认用户的问题在范围内(跨领域部署运行时,而非每服务配置模式问题)。 - 有关kubelet独立模式运行时形态、静态Pod清单目录规则、主机操作系统/BFB/固件槽/镜像拉取先决条件、八层错误分类、可观测性表面以及安全/冒烟后批量策略,请参阅CAPABILITIES.md。
- 有关逐步工作流——配置、构建、修改、运行、测试、调试——请参阅TASKS.md。