Container Service for Kubernetes (ACK) クラスター内の FPGA アクセラレーテッドノードには、FPGA ハードウェア属性を公開する専用のノードラベルが付与されています。これらのラベルをワークロードの nodeSelector で使用すると、Pod が FPGA ノードにのみ配置されるようになり、通常のワークロードが FPGA キャパシティを消費するのを防ぐことができます。
前提条件
開始する前に、以下を準備してください。
専用 FPGA クラスター。詳細については、「FPGA アクセラレーテッドノードを持つ ACK クラスターの作成」をご参照ください。
クラスターに接続するように設定された kubectl。詳細については、「クラスターの kubeconfig ファイルを取得し、kubectl を使用してクラスターに接続する」をご参照ください。
FPGA ノードラベル
FPGA アクセラレーテッドノードを ACK クラスターに追加すると、ACK は FPGA ハードウェアを記述するノードラベルを自動的にアタッチします。スケジューリングには、次のラベルが使用されます。
| ラベル | 値 | 説明 |
|---|---|---|
fpga.k8s.aliyun.com | f3 | Elastic Compute Service (ECS) f3 FPGA インスタンス |
このラベルをワークロード仕様の nodeSelector として設定し、FPGA ノードをターゲットにします。対応する FPGA リソースキーを持つ resources.limits を設定して、FPGA ユニットをリクエストします。
ステップ 1: FPGA ノードラベルの表示
方法 1: ACK コンソール
ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター]ページで、対象のクラスターを見つけ、その名前をクリックします。左側のナビゲーションウィンドウで、[ノード] > [ノード]を選択します。
「[ノード]」ページで、FPGA 加速ノードを見つけ、[操作] 列の [その他] > [詳細] を選択します。ノードにアタッチされたラベルを表示します。

方法 2: kubectl
クラスター内のすべてのノードをリスト表示します。
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.1FPGA アクセラレーテッドノードを記述して、そのラベルを表示します。
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-hfpga.k8s.aliyun.com=f3ラベルは、これが Elastic Compute Service (ECS) f3 FPGA インスタンスであることを識別します。次のステップでこのラベルを使用してノードをターゲットにします。
ステップ 2: Pod を FPGA アクセラレーテッドノードにスケジュールする
次のジョブ仕様では、nodeSelector: fpga.k8s.aliyun.com: f3 を使用して f3 FPGA ノードをターゲットにし、xilinx.com/fpga-aliyun-f3: 1 を使用して 1 つの FPGA ユニットをリクエストします。
ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスタ] をクリックします。
[クラスター] ページで、クラスターを探してその名前をクリックします。 左側のナビゲーションウィンドウで、[ワークロード] > [デプロイメント] を選択します。
[デプロイメント] ページで、[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] を選択します。 Pod のリストで、指定された Pod が必要な FPGA アクセラレーテッドノードにスケジュールされていることを確認できます。 ラベルを使用すると、特定の FPGA アクセラレーテッドノードに Pod を簡単にスケジュールできます。