在使用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節點標簽的靈活調度。