Clusters ACK Pro aceitam nós PPU em node pools do Lingjun. Verifique se os nós estão prontos, ative o agendamento binpack e solicite PPUs em uma workload por meio de resources.limits.
Pré-requisitos
-
Crie um cluster ACK gerenciado Pro e instale os add-ons ack-rdma-device-plugin e ack-ppu-device-plugin.
Ao instalar o add-on ack-ppu-device-plugin, selecione a opção Enable PPU Topology. Com essa opção ativada, o add-on relata informações de topologia PPU. O agendamento com reconhecimento de topologia PPU atribui, por padrão, a combinação ideal de PPUs às suas tarefas com base na topologia física. Há suporte para solicitações de agendamento de 1, 2, 4, 8 ou 16 PPUs.
Add existing Lingjun nodes (nós PPU) ao node pool do Lingjun.
Verificar se os nós PPU estão prontos
Após adicionar nós PPU ao node pool do Lingjun, verifique se os nós estão prontos:
kubectl get nodes -l aliyun.accelerator/xpu_type=ppu
Quando um nó PPU estiver pronto, ele terá os seguintes rótulos Kubernetes relacionados a PPU:
|
Rótulo |
Descrição |
Exemplo |
|
aliyun.accelerator/xpu_type |
Tipo do acelerador. |
ppu |
|
aliyun.accelerator/ppu_name |
Nome do modelo da PPU. |
PPU-ZW810E |
|
aliyun.accelerator/ppu_count |
Quantidade de PPUs por nó. |
16 |
|
aliyun.accelerator/ppu_mem |
Tamanho de memória de cada PPU. |
98304MiB |
Visualize os rótulos de um nó:
kubectl get node <NODE_NAME> -o jsonpath='{.metadata.labels}' | jq 'to_entries[ ] | select(.key | startswith("aliyun.accelerator"))'
Ativar a política de agendamento binpack
Para priorizar a alocação de tarefas PPU no mesmo nó e reduzir a fragmentação de recursos, ative a política de agendamento binpack.
Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em Components and Add-ons .
-
Localize Kube Scheduler e clique em Configuration. Configure os parâmetros na caixa de diálogo Kube Scheduler Parameters.
Ative a opção Pod scheduling prioritizes consolidating Pods on fewer nodes.
Na área binpackResourceWeight, clique em Add e defina resourceName como
alibabacloud.com/ppupara ativar a política de agendamento binpack para recursos PPU.
Implantar uma aplicação PPU
Após concluir a configuração, solicite recursos PPU usando resources.limits em uma workload. O exemplo abaixo mostra como implantar uma aplicação que solicita uma 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
Configurações principais:
resources.limits.alibabacloud.com/ppu: Quantidade de PPUs solicitadas. Valores válidos: 1, 2, 4, 8 e 16.tolerations: Adicione uma tolerância para o taintnode-role.alibabacloud.com/lingjunnos nós Lingjun. Caso contrário, os pods não serão agendados em nós PPU.
Verificar o resultado
Verifique se o pod foi agendado em um nó PPU e está em execução normal:
kubectl get pod -l app=ppu -o wide
Na saída esperada, o status do pod é Running e a coluna NODE exibe o nome de um nó PPU.
Visualize a alocação de PPU do nó onde o pod está em execução:
kubectl describe node <NODE_NAME> | grep -A 5 "Allocated resources"
A saída esperada indica que o recurso alibabacloud.com/ppu foi alocado.