在使用Kubernetes叢集實現FPGA計算時,為了有效利用FPGA裝置,可根據需要將應用調度到具有FPGA裝置的節點上。本文介紹根據FPGA節點標籤進行節點調度。
前提條件
您已成功建立一個擁有FPGA節點的Kubernetes叢集。具體操作,請參見建立FPGA叢集。
您已串連到Kubernetes叢集,方便快速查看節點標籤等資訊。具體操作,請參見擷取叢集KubeConfig並通過kubectl工具串連叢集。
背景資訊
阿里雲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節點標籤的靈活調度。