在使用Kubernetes集群实现FPGA计算时,为了有效利用FPGA设备,可根据需要将应用调度到具有FPGA设备的节点上。本文介绍根据FPGA节点标签进行节点调度。
背景信息
阿里云Kubernetes在部署FPGA节点的时候会发现FPGA的属性,并且作为NodeLabel信息暴露给您,拥有如下优势:
可以快速筛选FPGA节点。
部署时可以作为调度条件使用。
步骤一:查看FPGA节点的标签
方式一:通过控制台查看FPGA节点的标签
登录容器服务管理控制台 。
在控制台左侧导航栏中,单击集群 。
在集群列表 页面中,单击目标集群名称或者目标集群右侧操作 列下的详情 。
在集群管理页左侧导航栏中,选择。
在节点列表 页面中,选择FPGA节点,单击操作 列的。 查看FPGA节点的标签。
方式二:通过kubectl命令查看FPGA节点的标签
执行以下命令查看FPGA节点详情。 kubectl get nodes
预期输出:
NAME STATUS ROLES AGE VERSION
cn-beijing.192.168.XX.X1 Ready <none> 3h51m v1.18.8-aliyun.1
cn-beijing.192.168.XX.X2 Ready <none> 3h41m v1.18.8-aliyun.1
选择一个FPGA节点,执行以下命令查看该FPGA节点的标签。 kubectl describe node cn-beijing.192.168.XX.X2
预期输出:
Name: cn-beijing.192.168.XX.X2
Roles: <none>
Labels: ack.aliyun.com=c05888610e***
alibabacloud.com/nodepool-id=npfda879b6***
beta.kubernetes.io/arch=amd64
beta.kubernetes.io/instance-type=ecs.f3-c4f1.xlarge
beta.kubernetes.io/os=linux
failure-domain.beta.kubernetes.io/region=cn-beijing
failure-domain.beta.kubernetes.io/zone=cn-beijing-h
fpga.k8s.aliyun.com=f3
kubernetes.io/arch=amd64
kubernetes.io/hostname=cn-beijing.192.168.XX.X2
kubernetes.io/os=linux
node.kubernetes.io/instance-type=ecs.f3-c4f1.xlarge
topology.diskplugin.csi.alibabacloud.com/zone=cn-beijing-h
topology.kubernetes.io/region=cn-beijing
topology.kubernetes.io/zone=cn-beijing-h
从预期输出可得,该FPGA节点包含节点标签(NodeLabel)fpga.k8s.aliyun.com=f3
,下方示例使用该节点标签实现应用调度。
步骤二:调度应用到FPGA节点
登录容器服务管理控制台 。
在控制台左侧导航栏中,单击集群 。
在集群列表 页面中,单击目标集群名称或者目标集群右侧操作 列下的详情 。
在集群管理页左侧导航栏中,选择。
在无状态 页面中,单击使用YAML创建资源 。
选择自定义示例模板,将以下示例复制到模板 中。 apiVersion: batch/v1
kind: Job
metadata:
name: fpga-run-task1
spec:
backoffLimit: 0
completions: 1
parallelism: 1
template:
spec:
nodeSelector:
fpga.k8s.aliyun.com: f3
containers:
- image: <your image>
imagePullPolicy: Always
name: fpga-run-task1
resources:
limits:
xilinx.com/fpga-aliyun-f3: 1
securityContext:
privileged: true
说明 <your image>
替换为您自定义的应用镜像地址。
单击创建 。 在集群管理页左侧导航栏选择。
在容器组列表中,您可看到示例的Pod(容器组)已被成功调度到对应的节点上,从而实现基于FPGA节点标签的灵活调度。