Clusters ACK instalam versões diferentes do driver NVIDIA por padrão, conforme o tipo e a versão do cluster. Para instalar uma versão mais recente do driver em nós de GPU, carregue um driver personalizado no OSS e configure rótulos do node pool para obtê-lo via URL do OSS.
Observações de uso
O ACK não garante compatibilidade entre versões de drivers de GPU e da biblioteca CUDA. Você é responsável por verificar essa compatibilidade.
Para requisitos detalhados de drivers para diferentes modelos de GPU NVIDIA, consulte a documentação oficial da NVIDIA.
Se você utilizar uma imagem de sistema operacional personalizada com driver de GPU, NVIDIA Container Runtime ou outros componentes de GPU pré-instalados, o ACK não poderá garantir que o driver personalizado seja compatível com outros componentes de GPU do ACK, como agentes de monitoramento.
Ao especificar uma versão de driver de GPU usando um rótulo de node pool, a instalação ocorre apenas nos novos nós adicionados ao pool. Os nós existentes não são afetados. Para aplicar o novo driver aos nós existentes, Remove a node from a cluster or node pool e, em seguida, Add existing nodes.
Os tipos de instância gn7, GPU-accelerated compute-optimized instance family e GPU compute-optimized: gn, ebm, and scc apresentam problemas de compatibilidade com as versões de driver 510.xxx e 515.xxx. Use uma versão anterior à 510 com o GPU System Processor (GSP) desativado (por exemplo, 470.xxx.xxxx) ou a versão 525.125.06 ou superior.
Instâncias ECS dos tipos GPU compute-optimized: gn, ebm, and scc ou Ebmgn7e instance family suportam apenas versões de driver NVIDIA 525.125.06 ou posteriores.
Se você customize the GPU driver version by specifying a version number ou by using an OSS URL, o sistema operacional e o driver podem tornar-se incompatíveis após a atualização. Consulte Supported NVIDIA driver versions in ACK para selecionar um driver compatível.
Carregar seu próprio driver de GPU no OSS pode causar incompatibilidades com a imagem do sistema operacional, o tipo de instância ECS ou o runtime de contêiner, resultando em falha na criação do nó. O ACK não garante sucesso com esse método. Verifique a configuração antes de prosseguir.
Etapa 1: Baixar o driver desejado
Se as NVIDIA driver versions supported by ACK não incluírem a versão necessária, baixe o driver no site oficial da NVIDIA. Este exemplo utiliza a versão 550.90.07. Baixe o arquivo NVIDIA-Linux-x86_64-550.90.07.run para sua máquina local.
Etapa 2: Baixar o NVIDIA Fabric Manager
Baixe o NVIDIA Fabric Manager do repositório NVIDIA YUM. A versão do Fabric Manager deve corresponder à versão do driver.
wget https://developer.download.nvidia.cn/compute/cuda/repos/rhel7/x86_64/nvidia-fabric-manager-550.90.07-1.x86_64.rpm
Etapa 3: Criar um bucket do OSS
Faça login no console do OSS e create a bucket.
Crie o bucket na mesma região do seu cluster ACK para que os nós possam obter o driver pela rede interna.
Etapa 4: Carregar arquivos no bucket do OSS
-
Acesse o console do OSS e upload os arquivos
NVIDIA-Linux-x86_64-550.90.07.runenvidia-fabric-manager-550.90.07-1.x86_64.rpmno diretório raiz do bucket.ImportanteCarregue os arquivos no diretório raiz do bucket, e não em um subdiretório.
Na página do bucket, no painel de navegação à esquerda, clique em . Na coluna Actions do arquivo carregado, clique em Details.
-
No painel Details, desative a opção Use HTTPS.
ImportanteO ACK obtém os arquivos de driver via HTTP, mas o OSS usa HTTPS por padrão. Desative a opção Use HTTPS para habilitar o acesso HTTP.
-
No painel de navegação à esquerda, clique em Overview. Copie o endpoint interno na parte inferior da página.
ImportanteEndpoints externos são lentos e podem causar falha na criação de nós de GPU. Use um endpoint interno (contém
-internal) ou um endpoint acelerado (contémoss-accelerate).Se o download de um arquivo falhar, ajuste a política de access control do bucket.
Etapa 5: Configurar rótulos do node pool
Faça login no console do ACK. 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 .
-
Clique em Create Node Pool para adicionar nós de GPU. Consulte Create and manage a node pool para detalhes sobre os parâmetros. Os principais parâmetros para esta configuração são:
Na seção Node Labels, clique no ícone
para adicionar os seguintes rótulos. Substitua os valores de exemplo pelos seus valores reais.Key
Value
ack.aliyun.com/nvidia-driver-oss-endpointEndpoint interno do bucket do OSS obtido na Step 4.
my-nvidia-driver.oss-cn-beijing-internal.aliyuncs.comack.aliyun.com/nvidia-driver-runfileNome do arquivo de driver NVIDIA obtido na Step 1.
NVIDIA-Linux-x86_64-550.90.07.runack.aliyun.com/nvidia-fabricmanager-rpmNome do arquivo do Fabric Manager obtido na Step 2.
nvidia-fabric-manager-550.90.07-1.x86_64.rpm
Etapa 6: Verificar a instalação do driver
-
Visualize os Pods com o rótulo
component: nvidia-device-plugin:kubectl get po -n kube-system -l component=nvidia-device-plugin -o wideSaída esperada:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nvidia-device-plugin-cn-beijing.192.168.1.127 1/1 Running 0 6d 192.168.1.127 cn-beijing.192.168.1.127 <none> <none> nvidia-device-plugin-cn-beijing.192.168.1.128 1/1 Running 0 17m 192.168.1.128 cn-beijing.192.168.1.128 <none> <none> nvidia-device-plugin-cn-beijing.192.168.8.12 1/1 Running 0 9d 192.168.8.12 cn-beijing.192.168.8.12 <none> <none> nvidia-device-plugin-cn-beijing.192.168.8.13 1/1 Running 0 9d 192.168.8.13 cn-beijing.192.168.8.13 <none> <none>A saída mostra que o Pod do nó recém-adicionado é
nvidia-device-plugin-cn-beijing.192.168.1.128. -
Verifique se a versão correta do driver está instalada:
kubectl exec -ti nvidia-device-plugin-cn-beijing.192.168.1.128 -n kube-system -- nvidia-smiSaída esperada:
+-----------------------------------------------------------------------------------------+ | NVIDIA-SMI 550.90.07 Driver Version: 550.90.07 CUDA Version: 12.4 | |-----------------------------------------+------------------------+----------------------+ | GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |=========================================+========================+======================| | 0 Tesla P100-PCIE-16GB On | 00000000:00:08.0 Off | Off | | N/A 31C P0 26W / 250W | 0MiB / 16384MiB | 0% Default | | | | N/A | +-----------------------------------------+------------------------+----------------------+ +-----------------------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=========================================================================================| | No running processes found | +-----------------------------------------------------------------------------------------+A saída exibe a versão de driver 550.90.07, confirmando que o driver NVIDIA personalizado foi instalado com sucesso.
Outros métodos
Também é possível definir a URL do OSS do driver personalizado ao criar um node pool com a API CreateClusterNodePool:
{
// Other sections are omitted.
......
"tags": [
{
"key": "ack.aliyun.com/nvidia-driver-oss-endpoint",
"value": "my-nvidia-driver.oss-cn-beijing-internal.aliyuncs.com"
},
{
"key": "ack.aliyun.com/nvidia-driver-runfile",
"value": "NVIDIA-Linux-x86_64-550.90.07.run"
},
{
"key": "ack.aliyun.com/nvidia-fabricmanager-rpm",
"value": "nvidia-fabric-manager-550.90.07-1.x86_64.rpm"
}
],
// Other sections are omitted.
......
}