Los clústeres ACK Pro admiten nodos PPU en los node pools de Lingjun. Compruebe que los nodos estén listos, habilite la programación binpack y solicite PPU en una carga de trabajo mediante resources.limits.
Requisitos previos
-
Cree un clúster ACK administrado Pro e instale los complementos ack-rdma-device-plugin y ack-ppu-device-plugin.
Al instalar el complemento ack-ppu-device-plugin, seleccione la opción Enable PPU Topology . Una vez habilitada esta opción, el complemento reporta información sobre la topología de las PPU. Además, la programación con detección de topología asigna automáticamente la combinación óptima de PPU a sus tareas según la topología física. Se admiten solicitudes de programación para 1, 2, 4, 8 o 16 PPU.
Add existing Lingjun nodes (nodos PPU) al node pool de Lingjun.
Comprobación del estado de los nodos PPU
Después de agregar nodos PPU al node pool de Lingjun, compruebe si los nodos están listos:
kubectl get nodes -l aliyun.accelerator/xpu_type=ppu
Cuando un nodo PPU está listo, cuenta con las siguientes etiquetas de Kubernetes relacionadas con las PPU:
|
Etiqueta |
Descripción |
Ejemplo |
|
aliyun.accelerator/xpu_type |
Tipo de acelerador. |
ppu |
|
aliyun.accelerator/ppu_name |
Nombre del modelo de la PPU. |
PPU-ZW810E |
|
aliyun.accelerator/ppu_count |
Cantidad de PPU por nodo. |
16 |
|
aliyun.accelerator/ppu_mem |
Tamaño de memoria de cada PPU. |
98304MiB |
Consulte las etiquetas de un nodo:
kubectl get node <NODE_NAME> -o jsonpath='{.metadata.labels}' | jq 'to_entries[ ] | select(.key | startswith("aliyun.accelerator"))'
Habilitación de la política de programación binpack
Se recomienda habilitar la política de programación binpack para priorizar la ubicación de las tareas de PPU en un mismo nodo y reducir la fragmentación de recursos.
Inicie sesión en la consola de ACK. En el panel de navegación izquierdo, haga clic en Clusters.
En la página Clusters, haga clic en el nombre de su clúster. En el panel de navegación izquierdo, haga clic en Components and Add-ons .
-
Busque Kube Scheduler y haga clic en Configuration. Configure los parámetros en el cuadro de diálogo Kube Scheduler Parameters.
Habilite Pod scheduling prioritizes consolidating Pods on fewer nodes.
En la sección binpackResourceWeight, haga clic en Add y establezca resourceName en
alibabacloud.com/ppupara habilitar la política de programación binpack en los recursos de PPU.
Despliegue de una aplicación de PPU
Una vez completada la configuración, solicite recursos de PPU mediante resources.limits en una carga de trabajo. A continuación se muestra cómo desplegar una aplicación que solicita una PPU:
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
Configuraciones clave:
resources.limits.alibabacloud.com/ppu: cantidad de PPU solicitadas. Valores válidos: 1, 2, 4, 8 y 16.tolerations: agregue una tolerancia para el taintnode-role.alibabacloud.com/lingjunde los nodos Lingjun. De lo contrario, los pods no se podrán programar en los nodos PPU.
Comprobación del resultado
Compruebe si el pod se programó en un nodo PPU y se ejecuta correctamente:
kubectl get pod -l app=ppu -o wide
En el resultado esperado, el estado del pod es Running y la columna NODE muestra el nombre de un nodo PPU.
Consulte la asignación de PPU del nodo donde se ejecuta el pod:
kubectl describe node <NODE_NAME> | grep -A 5 "Allocated resources"
El resultado esperado indica que se asignó el recurso alibabacloud.com/ppu.