在灵骏节点池使用PPU

更新时间:
复制 MD 格式

本文介绍在ACK Pro集群的灵骏节点池中使用PPU节点的操作步骤及注意事项。

准备工作

  1. 创建ACK托管集群Pro版并安装ack-rdma-device-pluginack-ppu-device-plugin组件。

    安装ack-ppu-device-plugin组件时,请勾选Enable PPU Topology选项。开启后,组件将上报PPU拓扑信息,调度器默认按照最优PPU拓扑组合进行调度。PPU拓扑感知调度功能可根据PPU的物理拓扑结构,为您的任务分配最优的PPU组合,支持申请1、2、4、8、16卡调度。
  2. 创建灵骏节点池

  3. 添加已有灵骏节点(PPU节点)到灵骏节点池。

在灵骏节点池使用PPU

确认PPU节点已就绪

添加PPU节点到灵骏节点池后,检查节点是否正常就绪:

kubectl get nodes -l aliyun.accelerator/xpu_type=ppu

PPU节点就绪后,可在节点上看到如下PPU相关的Kubernetes节点标签:

标签

说明

示例值

aliyun.accelerator/xpu_type

加速器类型

ppu

aliyun.accelerator/ppu_name

PPU型号名称

PPU-ZW810E

aliyun.accelerator/ppu_count

每节点PPU数量

16

aliyun.accelerator/ppu_mem

每个PPU的显存大小

98304MiB

查看节点标签信息:

kubectl get node <NODE_NAME> -o jsonpath='{.metadata.labels}' | jq 'to_entries[ ] | select(.key | startswith("aliyun.accelerator"))'

开启Binpack调度策略

为使PPU任务优先集中放置到同一节点,减少碎片,建议开启Binpack调度策略。

  1. 登录容器服务管理控制台,在左侧导航栏选择集群列表

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,单击组件管理

  3. 核心组件页签区域,定位kube-scheduler组件,单击卡片右下方的配置,在对话框中按照页面提示完成参数的配置。

    1. 勾选启用Pod 调度优先集中放置

    2. binpackResourceWeight一栏,单击添加,将resourceName声明为alibabacloud.com/ppu,启用针对PPU资源的Binpack调度策略。

部署PPU应用

配置完成后,在工作负载中通过resources.limits申请PPU资源即可。以下示例展示如何部署一个申请1PPU的应用:

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: ppu
  name: ppu-test
  namespace: default
spec:
  selector:
    matchLabels:
      app: ppu
  template:
    metadata:
      labels:
        app: ppu
    spec:
      containers:
        - image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
          imagePullPolicy: IfNotPresent
          name: ppu
          ports:
            - containerPort: 80
              protocol: TCP
          resources:
            limits:
              alibabacloud.com/ppu: "1"
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      tolerations:
        - key: node-role.alibabacloud.com/lingjun
          operator: Exists
          effect: NoSchedule

关键配置说明:

  • resources.limits.alibabacloud.com/ppu:申请的PPU数量,支持1、2、4、8、16等值。

  • tolerations:需要添加对灵骏节点污点node-role.alibabacloud.com/lingjun的容忍,否则Pod无法调度到PPU节点。

验证结果

查看Pod是否正常调度到PPU节点并运行:

kubectl get pod -l app=ppu -o wide

预期输出中Pod状态为Running,且NODE列为PPU节点名称。

查看Pod所在节点的PPU分配情况:

kubectl describe node <NODE_NAME> | grep -A 5 "Allocated resources"

预期输出中可以看到alibabacloud.com/ppu资源已被分配。