Atualmente, esse driver de recursos do DRA está em desenvolvimento ativo e ainda não foi projetado para uso da produção. Podemos (às vezes) decidir empurrar os compromissos main
até que tenhamos algo mais estável. Use por sua conta e risco.
Um documento e uma demonstração do suporte a DRA para as GPUs fornecidos por este repositório pode ser encontrado abaixo:
Documento | Demonstração |
---|---|
Esta seção descreve o uso kind
para demonstrar a funcionalidade do driver da NVIDIA GPU DRA.
Primeiro, já que lançaremos o tipo com suporte à GPU, verifique se os seguintes pré -requisitos são atendidos:
kind
está instalado. Veja a documentação oficial aqui.
Verifique se o kit de ferramentas de contêiner nvidia está instalado no seu sistema. Isso pode ser feito seguindo as instruções aqui.
Configure o tempo de execução do contêiner da NVIDIA como o tempo de execução padrão do Docker:
sudo nvidia-ctk runtime configure --runtime=docker --set-as-default
Reinicie o Docker para aplicar as alterações:
sudo systemctl restart docker
Defina a opção accept-nvidia-visible-devices-as-volume-mounts
como true
no arquivo /etc/nvidia-container-runtime/config.toml
para configurar o tempo de execução do contêiner da NVIDIA para usar montagens de volume para selecionar dispositivos para injetar em um recipiente.
sudo nvidia-ctk config --in-place --set accept-nvidia-visible-devices-as-volume-mounts=true
Mostre o conjunto atual de GPUs na máquina:
nvidia-smi -L
Começamos primeiro clonando este repositório e cd
nele. Todos os scripts e especificações de POD de exemplo usados nesta demonstração estão no subdiretório demo
, então reserve um momento para navegar pelos vários arquivos e ver o que está disponível:
git clone https://github.com/NVIDIA/k8s-dra-driver.git
cd k8s-dra-driver
Aqui está uma demonstração mostrando como instalar e configurar o DRA e executar uma vagem em um cluster kind
em uma estação de trabalho do Linux.
Abaixo estão as instruções detalhadas e passo a passo.
Primeiro, crie um cluster kind
para executar a demonstração:
./demo/clusters/kind/create-cluster.sh
A partir daqui, construiremos a imagem para o exemplo de driver de recurso:
./demo/clusters/kind/build-dra-driver.sh
Isso também disponibiliza as imagens construídas para o cluster kind
.
Agora instalamos o driver da NVIDIA GPU DRA:
./demo/clusters/kind/install-dra-driver.sh
Isso deve mostrar dois pods em execução no namespace nvidia-dra-driver
:
kubectl get pods -n nvidia-dra-driver
NAME READY STATUS RESTARTS AGE
nvidia-k8s-dra-driver-kubelet-plugin-t5qgz 1/1 Running 0 44s
Finalmente, você pode executar os vários exemplos contidos na pasta demo/specs/quickstart
. Com as atualizações mais recentes do Kubernetes v1.31, apenas os três primeiros exemplos nesta pasta estão atualmente funcionais.
Você pode executá -los da seguinte maneira:
kubectl apply --filename=demo/specs/quickstart/gpu-test{1,2,3}.yaml
Obtenha os status dos pods. Dependendo de quais GPUs estão disponíveis, executando os três primeiros exemplos produzirá saída semelhante ao seguinte ...
NOTA: Há um problema conhecido com o tipo. Você pode ver um erro ao tentar aproveitar o log de uma vagem em execução no cluster tipo: failed to create fsnotify watcher: too many open files.
O problema pode ser resolvido aumentando o valor para fs.inotify.max_user_watches
.
kubectl get pod -A -l app=pod
NAMESPACE NAME READY STATUS RESTARTS AGE
gpu-test1 pod1 1/1 Running 0 34s
gpu-test1 pod2 1/1 Running 0 34s
gpu-test2 pod 2/2 Running 0 34s
gpu-test3 pod1 1/1 Running 0 34s
gpu-test3 pod2 1/1 Running 0 34s
kubectl logs -n gpu-test1 -l app=pod
GPU 0: A100-SXM4-40GB (UUID: GPU-662077db-fa3f-0d8f-9502-21ab0ef058a2)
GPU 0: A100-SXM4-40GB (UUID: GPU-4cf8db2d-06c0-7d70-1a51-e59b25b2c16c)
kubectl logs -n gpu-test2 pod --all-containers
GPU 0: A100-SXM4-40GB (UUID: GPU-79a2ba02-a537-ccbf-2965-8e9d90c0bd54)
GPU 0: A100-SXM4-40GB (UUID: GPU-79a2ba02-a537-ccbf-2965-8e9d90c0bd54)
kubectl logs -n gpu-test3 -l app=pod
GPU 0: A100-SXM4-40GB (UUID: GPU-4404041a-04cf-1ccf-9e70-f139a9b1e23c)
GPU 0: A100-SXM4-40GB (UUID: GPU-4404041a-04cf-1ccf-9e70-f139a9b1e23c)
Remova o cluster criado nas etapas anteriores:
./demo/clusters/kind/delete-cluster.sh