Plug-in de GPU NVIDIA

Ao ativar o complemento de cluster do Plug-in de GPU NVIDIA, você pode passar os seguintes pares de chave/valor como argumentos.

Observe que, para garantir que as cargas de trabalho em execução nos nós de trabalho de GPU NVIDIA não sejam interrompidas inesperadamente, recomendamos que você escolha a versão do complemento de Plug-in de GPU NVIDIA a ser implantada, em vez de especificar que deseja que a Oracle atualize o complemento automaticamente.

Argumentos de Configuração Comuns à maioria dos Complementos de Cluster
Chave (API e CLI) Nome para Exibição da Chave (Console) Descrição Obrigatório/Opcional Valor Padrão Valor de Exemplo
affinity afinidade

Um grupo de regras de programação de afinidade.

Formato JSON em texto simples ou codificado em Base64.

Não utilizado por:
  • Operador de GPU Nvidia
Possíveis equivalentes:
  • Descoberta de Recursos do Nó, use master.affinity
  • Operador de Rede NVIDIA, use operator.affinity
  • Driver SMB CSI, use contoller.affinity
  • Operador de GPU AMD, use controllerManager.affinity
Opcional nulo nulo
nodeSelectors seletores de nó

Você pode usar seletores de nó e labels de nó para controlar os nós de trabalho nos quais os pods complementares são executados.

Para que um pod seja executado em um nó, o seletor de nós do pod deve ter a mesma chave/valor do label do nó.

Defina nodeSelectors como um par de chave/valor que corresponda ao seletor de nós do pod e ao label do nó de trabalho.

Formato JSON em texto simples ou codificado em Base64.

Não utilizado por:
  • Operador de GPU NVIDIA
  • SMB do Driver CSI
Possíveis equivalentes:
  • Descoberta de Recursos do Nó, use worker.nodeSelector
  • Operador de Rede NVIDIA, use operator.nodeSelectors
  • Operador de GPU AMD, use selector ou controllerManager.nodeSelector
Opcional nulo {"foo":"bar", "foo2": "bar2"}

O pod só será executado em nós que tenham o label foo=bar ou foo2=bar2.

numOfReplicas numOfReplicas O número de réplicas da implantação do complemento.
Não utilizado por:
  • Plug-in de GPU AMD
  • Operador de GPU NVIDIA
  • Operador de Rede NVIDIA
  • SMB do Driver CSI
Possíveis equivalentes:
  • CoreDNS, use nodesPerReplica
  • Descoberta de Recursos do Nó, use master.replicaCount
  • Operador de GPU AMD, use controllerManager.replicas
Obrigatório 1

Cria uma réplica da implantação do complemento por cluster.

2

Cria duas réplicas da implantação do complemento por cluster.

rollingUpdate rollingUpdate

Controla o comportamento desejado de atualização incremental por maxSurge e maxUnavailable.

Formato JSON em texto simples ou codificado em Base64.

Não utilizado por:
  • Descoberta de Recurso do Nó
  • Operador de Rede NVIDIA
  • SMB do Driver CSI
Possíveis equivalentes:
  • Operador de GPU NVIDIA, use daemonsets.rollingUpdate.maxUnavailable
  • Operador de GPU AMD, use upgradePolicy em devicePlugin, metricsExporter, testRunner, configManager ou draDriver
Opcional nulo nulo
tolerations tolerâncias

Você pode usar taints e tolerations para controlar os nós de trabalho nos quais os pods complementares são executados.

Para que um pod seja executado em um nó que tenha uma taint, o pod deve ter uma tolerância correspondente.

Defina tolerations como um par de chave/valor que corresponda à tolerância do pod e à mancha do nó de trabalho.

Formato JSON em texto simples ou codificado em Base64.

Possíveis equivalentes:
  • Descoberta de Recursos do Nó, use master.tolerations e/ou worker.tolerations
  • Operador de GPU NVIDIA, use daemonsets.tolerations
  • Operador de Rede NVIDIA, use operator.tolerations
  • Driver SMB CSI, use controller.tolerations
  • Operador de GPU AMD, usar tolerações em devicePlugin, metricsExporter, testRunner, configManager, draDriver ou controllerManager
Opcional nulo [{"key":"tolerationKeyFoo", "value":"tolerationValBar", "effect":"noSchedule", "operator":"exists"}]

Somente pods que têm essa tolerância podem ser executados em nós de trabalho que têm a mancha tolerationKeyFoo=tolerationValBar:noSchedule.

topologySpreadConstraints topologySpreadConstraints

Como distribuir pods correspondentes entre a topologia fornecida.

Formato JSON em texto simples ou codificado em Base64.

Não utilizado por:
  • Descoberta de Recurso do Nó
  • Operador de GPU NVIDIA
  • Operador de Rede NVIDIA
  • SMB do Driver CSI
  • AMD GPU Operator
Opcional nulo nulo
Argumentos de Configuração Específicos para esta Extensão de Cluster
Chave (API e CLI) Nome para Exibição da Chave (Console) Descrição Obrigatório/Opcional Valor Padrão Valor de Exemplo
deviceIdStrategy Estratégia de ID do Dispositivo

Qual estratégia usar para transmitir IDs de dispositivo ao runtime subjacente.

Uma das seguintes:

  • uuid
  • index
Opcional uuid
deviceListStrategy Estratégia da Lista de Dispositivos

Qual estratégia usar para passar a lista de dispositivos para o runtime subjacente.

Valores suportados:

  • envvar
  • volume-mounts
  • cdi-annotations
  • cdi-cri

Há suporte para vários valores, em uma lista separada por vírgulas.

Opcional envvar
driverRoot Raiz do driver O caminho raiz para a instalação do driver NVIDIA. Opcional /
failOnInitError FailOnInitError

Se o plug-in falhará se for encontrado um erro durante a inicialização.

Quando definido como false, bloqueia o plug-in indefinidamente, em vez de falhar.

Opcional true
migStrategy Estratégia MIG

Qual estratégia usar para expor dispositivos MIG (GPU com várias instâncias) em GPUs que os suportam.

Uma das seguintes:

  • none
  • single
  • mixed
Opcional none
nvidia-gpu-device-plugin.ContainerResources recursos do contêiner nvidia-gpu-device-plugin

Você pode especificar as quantidades de recursos solicitadas pelos contêineres de complementos e definir limites de uso de recursos que os contêineres de complementos não podem exceder.

Formato JSON em texto simples ou codificado em Base64.

Opcional nulo {"limits": {"cpu": "500m", "memory": "200Mi" }, "requests": {"cpu": "100m", "memory": "100Mi"}}

Crie contêineres complementares que solicitem 100 mililitros de CPU e 100 mebibytes de memória. Limite os contêineres complementares a 500 milicores de CPU e 200 mebibytes de memória.

passDeviceSpecs Informar Especificações do Dispositivo Se os caminhos e as permissões desejadas do nó do dispositivo devem ser especificados para qualquer dispositivo NVIDIA que esteja sendo alocado ao contêiner. Opcional false
useConfigFile Usar arquivo de configuração de ConfigMap

Se um arquivo de configuração deve ser usado para configurar o Plug-in do Dispositivo Nvidia para Kubernetes. O arquivo de configuração é derivado de um ConfigMap.

Se definido como true, você deverá criar um ConfigMap no cluster, nomear o ConfigMap nvidia-device-plugin-config e especificar valores para argumentos de configuração. Consulte Exemplo.

O ConfigMap é referenciado pelo daemonset nvidia-gpu-device-plugin.

Opcional false

Exemplo de nvidia-device-plugin-config ConfigMap:

apiVersion: v1
kind: ConfigMap
metadata: 
  name: nvidia-device-plugin-config 
  namespace: kube-system
data:
  config.yaml: |
    version: v1
    flags:
      migStrategy: "none"
      failOnInitError: true
      nvidiaDriverRoot: "/"
      plugin:
        passDeviceSpecs: false
        deviceListStrategy: envvar
        deviceIDStrategy: uuid
Considerações sobre Clusters Grandes

A tabela a seguir descreve considerações para configurar este complemento de cluster em clusters grandes.

Nome do Argumento Número wrt de Atribuições dos Nós Descrição À medida que o tamanho do cluster aumenta Riscos Recomendação
nvidia-gpu-device-plugin.ContainerResources S

Define solicitações e limites de CPU e memória para pods de Plug-in de GPU NVIDIA.

O plug-in é executado em cada nó de GPU como um DaemonSet, portanto, o uso total de recursos aumenta com o número de nós de GPU.

Nós GPU adicionais aumentam:

  • Despesas gerais de monitoramento da integridade da GPU
  • Rastreamento de alocação de dispositivos
  • Geração de relatórios de recursos no nível do nó

Se os recursos forem subdimensionados:

  • O plug-in pode se tornar instável nos nós.
  • Os recursos de GPU podem não ser divulgados corretamente.
  • Os pods podem falhar ao serem programados nos nós de GPU.
  • A disponibilidade de GPU pode ser inconsistente entre os nós.
  • Aloque memória suficiente em cada nó de GPU.
  • Ajuste os recursos com base no número de GPUs em cada nó e na intensidade das cargas de trabalho de GPU.
affinity / nodeSelectors / tolerations S

Controla os nós nos quais os pods de Plug-in de GPU NVIDIA são executados.

  • Garante que o plug-in seja executado somente em nós de GPU.
  • Impede a implantação desnecessária em nós somente CPU.
  • Evita o desperdício de recursos em nós que não contêm GPUs.

Se estes argumentos estiverem configurados incorretamente:

  • O plug-in pode ser executado em nós somente CPU e desperdiçar recursos.
  • O plug-in pode não ser executado em nós de GPU, tornando as GPUs inutilizáveis pelas cargas de trabalho do Kubernetes.
  • Use seletores de nó que correspondam aos labels aplicados aos nós GPU.
  • Configure tolerâncias quando os nós de GPU estiverem contaminados.
topologySpreadConstraints N

Controla como os pods de Plug-in de GPU NVIDIA são distribuídos entre nós e domínios de disponibilidade.

As restrições de distribuição de topologia ajudam a manter uma distribuição uniforme em clusters e clusters de vários domínios com pools de nós de GPU heterogêneos.

Se as restrições de distribuição de topologia não estiverem configuradas:

  • Os pods de plug-in podem ser distribuídos de forma desigual.
  • A resiliência durante falhas de nó ou domínio de disponibilidade pode ser reduzida.

Use restrições de distribuição de topologia para clusters de GPU grandes que abrangem vários domínios de disponibilidade ou contêm pools de nós de GPU heterogêneos.

numOfReplicas N

Controla o número de réplicas dos componentes que suportam o dimensionamento baseado em réplica.

O Plug-in de GPU NVIDIA é executado como um DaemonSet com um pod em cada nó de GPU elegível. Não é dimensionado alterando uma contagem de réplicas.

Não aplicável Não aplicável
rollingUpdate N

Controla como os pods do Plug-in de GPU NVIDIA são atualizados.

Em clusters grandes, uma atualização pode afetar muitos nós de GPU e reduzir temporariamente a disponibilidade de GPU.

  • Cargas de trabalho de GPU podem ser interrompidas.
  • As GPUs podem estar temporariamente indisponíveis enquanto os pods de plug-in são atualizados.
  • Use uma estratégia de atualização contínua controlada.
  • Evite atualizar um grande número de nós de GPU simultaneamente.
failOnInitError S

Controla o comportamento do plug-in quando a inicialização falha.

As falhas de inicialização se tornam mais propensas a ocorrer em algum lugar do cluster à medida que o número de nós de GPU aumenta.

  • Se o valor for true , o plug-in poderá ser encerrado e a GPU no nó afetado ficará indisponível.
  • Se o valor for false , o plug-in poderá permanecer em execução sem se tornar operacional, tornando a falha menos visível.
  • Mantenha o valor definido como true para que as falhas de inicialização permaneçam visíveis.
  • Monitore falhas de inicialização do plug-in nos nós de GPU.
deviceListStrategy / deviceIdStrategy N

Controle como os dispositivos de GPU são identificados e expostos a contêineres.

As estratégias selecionadas afetam a integração de contêiner-tempo de execução e a eficiência de alocação de GPU nos nós de GPU.

Se configurado incorretamente, os dispositivos GPU podem não ser identificados ou injetados de forma consistente nos contêineres. Isso pode resultar em falhas de carga de trabalho de GPU, atribuições de dispositivo incorretas ou problemas de agendamento nos nós de GPU.

Configure deviceListStrategy e deviceIdStrategy para corresponder ao runtime do contêiner e ao ambiente de GPU e use a estratégia de identificação de dispositivo uuid padrão, a menos que um caso de uso validado exija o contrário.
migStrategy N

Controla como os recursos de GPU de várias instâncias da NVIDIA são expostos ao Kubernetes.

A GPU de várias instâncias pode melhorar o compartilhamento e a utilização de GPU à medida que o número de cargas de trabalho de GPU aumenta.

Se este argumento estiver configurado incorretamente:

  • Os recursos de GPU podem se tornar fragmentados.
  • A programação da carga de trabalho pode se tornar mais complexa.

Use GPU de Várias Instâncias somente quando o particionamento de GPU for necessário.