Migração dos recursos de GPU do NVIDIA para os nós de trabalho do RHCOS
Nuvem Privada Virtual
Analise as etapas a seguir sobre como migrar seus recursos de operador de GPU NVIDIA dos nós de trabalho de GPU do RHEL 8 para os nós de trabalho do RHCOS.
O operador de GPU NVIDIA consiste nos seguintes recursos:
gpu-feature-discoverynvidia-container-toolkit-daemonsetnvidia-cuda-validatornvidia-dcgmnvidia-dcgm-exporternvidia-device-plugin-daemonsetnvidia-driver-daemonsetnvidia-node-status-exporternvidia-operator-validator
O principal componente de interesse é nvidia-driver-daemonset. Esse componente é responsável por instalar o driver da GPU no nó de trabalho da GPU. Esses drivers são instalados de forma diferente quando o alvo são os nós de trabalho
RHEL 8 e RHCOS.
Declaração oficial do operador de GPU NVIDIA: Todos os nós de trabalho ou grupos de nós para executar cargas de trabalho de GPU no cluster Kubernetes devem executar a mesma versão do sistema operacional para usar o contêiner do driver de GPU NVIDIA. Como alternativa, se você pré-instalar o driver de GPU NVIDIA nos nós, poderá executar sistemas operacionais diferentes. Para obter mais informações, consulte Instalação do operador de GPU NVIDIA.
O operador de GPU NVIDIA não é capaz de gerenciar simultaneamente instalações de driver em diferentes sistemas operacionais de nós de trabalho. Essa limitação significa que, se a instalação do driver da GPU for gerenciada exclusivamente pelo operador da GPU NVIDIA, será necessária uma migração completa da instalação do driver ao alterar os sistemas operacionais do nó de trabalho.
Conclua as etapas a seguir para migrar as instalações do driver do operador de GPU NVIDIA do RHEL 8 para os nós de trabalho do RHCOS. Este exemplo descreve especificamente as etapas de migração para a seguinte configuração de cluster:
Detalhes do ambiente inicial
Analise os detalhes e as observações para migrar uma versão Red Hat OpenShift on IBM Cloud 4.17 em VPC com nós de trabalho RHEL 8 para a versão 4.18 com nós de trabalho RHCOS.
A versão 4.18 é compatível apenas com o RHCOS e o RHEL 9.
Antes de começar, verifique se o cluster atende aos seguintes requisitos.
- Um cluster VPC 4.17 com nós de trabalho RHEL 8 usando os sabores de GPU NVIDIA.
- O operador NVIDIA GPU, ClusterPolicy, e os operandos estão todos instalados e
Ready.
- Obtenha os detalhes do site
nvidia-gpu-operator.
Exemplo de saídaoc get po -n nvidia-gpu-operator -o wideNAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES gpu-feature-discovery-ng7zn 1/1 Running 0 6m6s 172.23.145.152 10.240.0.15 <none> <none> gpu-operator-678b489684-7zgkq 1/1 Running 0 45h 172.23.145.135 10.240.0.15 <none> <none> nvidia-container-toolkit-daemonset-j4dzs 1/1 Running 0 6m6s 172.23.145.143 10.240.0.15 <none> <none> nvidia-cuda-validator-l44mz 0/1 Completed 0 2m28s 172.23.145.236 10.240.0.15 <none> <none> nvidia-dcgm-7sfvn 1/1 Running 0 6m7s 172.23.145.180 10.240.0.15 <none> <none> nvidia-dcgm-exporter-s5k48 1/1 Running 0 6m6s 172.23.145.172 10.240.0.15 <none> <none> nvidia-device-plugin-daemonset-xhds2 1/1 Running 0 6m6s 172.23.145.191 10.240.0.15 <none> <none> nvidia-driver-daemonset-mjqls 1/1 Running 0 7m1s 172.23.145.145 10.240.0.15 <none> <none> nvidia-node-status-exporter-5kvs4 1/1 Running 0 7m16s 172.23.145.235 10.240.0.15 <none> <none> nvidia-operator-validator-pz7wm 1/1 Running 0 6m7s 172.23.145.153 10.240.0.15 <none> <none> - Obtenha os detalhes do site
gpu-cluster-policye certifique-se de que ele sejaready.
Exemplo de saídaoc get clusterpolicies.nvidia.com gpu-cluster-policyNAME STATUS AGE gpu-cluster-policy ready 2025-03-07T03:07:00Z
Etapa 1: Atualizar o mestre do cluster
Execute o comando a seguir para atualizar o servidor mestre.
ibmcloud oc cluster master update --cluster <clusterNameOrID> --version 4.18_openshift
Neste momento, não atualize os nós de trabalho para 4.18. Por enquanto, mantenha seus funcionários do RHEL 8 em 4.17.
Etapa 2: Criar um pool de trabalho de cluster do RHCOS
-
Execute o seguinte comando para criar um pool de trabalho do RHCOS.
ibmcloud oc worker-pool create vpc-gen2 \ --cluster <clusterNameOrID> \ --name <workerPoolName> \ --flavor <workerNodeFlavor> \ --size-per-zone <sizePerZoneCount> \ --operating-system RHCOS
Não adicione zonas a esse pool de trabalhadores do RHCOS. Não deve haver trabalhadores nesse pool de trabalhadores.
Etapa 3: Adicionar rótulos de pool de trabalho ao pool de trabalho do RHCOS
Adicione os seguintes rótulos ao pool de trabalho do RHCOS.
nvidia.com/gpu.deploy.operands=false. Para obter mais informações, consulte Impedindo a instalação de operandos em alguns nósnvidia.com/gpu.deploy.driver=false. Para obter mais informações, consulte Impedindo a instalação do driver de GPU NVIDIA em alguns nós
A adição de rótulos ao pool de trabalho permite que os rótulos dos nós existam antes que os nós de trabalho estejam disponíveis para o cluster. Isso garante que os recursos da GPU NVIDIA não sejam agendados automaticamente desde o início. Se os recursos da GPU NVIDA forem agendados em nós de trabalho nos quais os drivers não podem ser instalados, isso degradará o status do recurso ClusterPolicy. Os drivers ainda não podem ser instalados nos nós de trabalho do RHCOS porque o operador de GPU do NVIDIA está configurado para usar o método de instalação do RHEL 8.
Execute o seguinte comando para adicionar rótulos ao seu pool de trabalho.
ibmcloud oc worker-pool label set \
--cluster <clusterNameOrID> \
--worker-pool <workerPoolNameOrID> \
--label nvidia.com/gpu.deploy.operands=false \
--label nvidia.com/gpu.deploy.driver=false
Etapa 4: Adicionar nós de trabalho do RHCOS ao cluster
Adicione capacidade ao seu cluster para permitir a migração da carga de trabalho. A adição de zonas ao pool de trabalho aciona os nós de trabalho para iniciar o provisionamento e ingressar no cluster. Observe que os recursos de GPU do NVIDIA ainda não foram implantados nos nós de trabalho do RHCOS.
ibmcloud oc zone add vpc-gen2 \
--cluster <clusterNameOrID> \
--worker-pool <workerPoolNameOrID> \
--subnet-id <vpcSubnetID> \
--zone <vpcZone>
Nesse momento, os nós de trabalho do RHCOS estão disponíveis no cluster para iniciar a migração.
Etapa 5: altere o instalador do driver nos nós de trabalho do RHEL 8 para não gerenciado
Adicione o rótulo nvidia.com/gpu.deploy.driver=false aos nós de trabalho do RHEL 8. Esse rótulo cancela o agendamento dos pods do instalador de driver existentes dos trabalhadores do RHEL 8. O driver não deve ser desinstalado.
Outros operandos, incluindo plug-ins de dispositivos, permanecem nos trabalhadores do RHEL 8. O estado ClusterPolicy permanece pronto. Como o driver ainda está instalado e o plug-in do dispositivo está em execução, as cargas
de trabalho da GPU continuam a funcionar.
-
Adicione o
nvidia.com/gpu.deploy.driver=falseaos nós de trabalho do RHEL 8.Para nomear um nó de trabalho específico:
oc label nodes <nodeName> "nvidia.com/gpu.deploy.driver=false"Para rotular um pool de trabalho inteiro:
ibmcloud oc worker-pool label set \ --cluster <clusterNameOrID> \ --worker-pool <workerPoolNameOrID> \ --label nvidia.com/gpu.deploy.driver=false -
Liste os pods para confirmar os rótulos.
oc get po -n nvidia-gpu-operator -o wideExemplo de saída
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES gpu-feature-discovery-ng7zn 1/1 Running 0 4h27m 172.23.145.152 10.240.0.15 <none> <none> gpu-operator-678b489684-7zgkq 1/1 Running 0 2d2h 172.23.145.135 10.240.0.15 <none> <none> nvidia-container-toolkit-daemonset-j4dzs 1/1 Running 0 4h27m 172.23.145.143 10.240.0.15 <none> <none> nvidia-cuda-validator-l44mz 0/1 Completed 0 4h24m 172.23.145.236 10.240.0.15 <none> <none> nvidia-dcgm-7sfvn 1/1 Running 0 4h27m 172.23.145.180 10.240.0.15 <none> <none> nvidia-dcgm-exporter-s5k48 1/1 Running 0 4h27m 172.23.145.172 10.240.0.15 <none> <none> nvidia-device-plugin-daemonset-xhds2 1/1 Running 0 4h27m 172.23.145.191 10.240.0.15 <none> <none> nvidia-driver-daemonset-mjqls 1/1 Terminating 0 4h28m 172.23.145.145 10.240.0.15 <none> <none> nvidia-node-status-exporter-5kvs4 1/1 Running 0 4h28m 172.23.145.235 10.240.0.15 <none> <none> nvidia-operator-validator-pz7wm 1/1 Running 0 4h27m 172.23.145.153 10.240.0.15 <none> <none> -
Confirme se o endereço
gpu-cluster-policyéready.oc get clusterpolicies.nvidia.com gpu-cluster-policyExemplo de saída
NAME STATUS AGE gpu-cluster-policy ready 2025-03-07T03:07:00Z
Etapa 6: Agende o instalador do driver e outros operandos para os nós de trabalho do RHCOS
Adicione os endereços nvidia.com/gpu.deploy.driver=true e nvidia.com/gpu.deploy.operands=true aos seus funcionários RHCOS.
A adição desses rótulos tenta agendar o instalador do driver, o plug-in do dispositivo e outros operandos para os nós de trabalho do RHCOS. A maioria dos pods está no estado init devido à falha do instalador do driver. O instalador
do driver está falhando porque está tentando instalar o driver usando o método RHEL 8.
Execute o comando label nodes para adicionar rótulos.
Para nomear um nó de trabalho específico:
oc label nodes <nodeName> "nvidia.com/gpu.deploy.driver=true"
oc label nodes <nodeName> "nvidia.com/gpu.deploy.operands=true"
Para rotular um pool de trabalho inteiro:
ibmcloud oc worker-pool label set \
--cluster <clusterNameOrID> \
--worker-pool <workerPoolNameOrID> \
--label nvidia.com/gpu.deploy.driver=true
Depois de adicionar os rótulos, passe para a próxima etapa.
Etapa 7: Converter o instalador do driver do RHEL 8 para o método de instalação do RHCOS
Excluir nvidia-driver-installer DaemonSet. Esse DaemonSet é específico do RHEL 8 e não é mais necessário. O operador de GPU reconcilia e detecta que um nó de trabalho RHCOS está presente no cluster. O operador da GPU recria o
instalador do driver DaemonSet,, mas agora com o método de instalação do RHCOS baseado no OpenShift Driver Toolkit.
-
Excluir
nvidia-driver-installerDaemonSet. Depois de excluir o site DaemonSet,, não adicione nem recarregue nenhum dos GPU workers do RHEL 8.oc delete daemonset -n nvidia-gpu-operator nvidia-driver-installer -
Liste os pods e confirme se o driver da GPU está instalado nos nós de trabalho do RHCOS e se os operandos restantes são
ready.oc get po -n nvidia-gpu-operator -o wideExemplo de saída
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES gpu-feature-discovery-h4bhx 1/1 Running 0 18m 172.23.137.119 test-coajphf20ooqeeg7u9dg-btsstagevpc-gx316x8-000239a8 <none> <none> gpu-feature-discovery-ng7zn 1/1 Running 0 4h58m 172.23.145.152 10.240.0.15 <none> <none> gpu-operator-678b489684-7zgkq 1/1 Running 0 2d2h 172.23.145.135 10.240.0.15 <none> <none> nvidia-container-toolkit-daemonset-79j86 1/1 Running 0 18m 172.23.137.115 test-coajphf20ooqeeg7u9dg-btsstagevpc-gx316x8-000239a8 <none> <none> nvidia-container-toolkit-daemonset-j4dzs 1/1 Running 0 4h58m 172.23.145.143 10.240.0.15 <none> <none> nvidia-cuda-validator-l44mz 0/1 Completed 0 4h55m 172.23.145.236 10.240.0.15 <none> <none> nvidia-cuda-validator-xgscz 0/1 Completed 0 15m 172.23.137.121 test-coajphf20ooqeeg7u9dg-btsstagevpc-gx316x8-000239a8 <none> <none> nvidia-dcgm-7sfvn 1/1 Running 0 4h58m 172.23.145.180 10.240.0.15 <none> <none> nvidia-dcgm-9rpnz 1/1 Running 0 18m 172.23.137.117 test-coajphf20ooqeeg7u9dg-btsstagevpc-gx316x8-000239a8 <none> <none> nvidia-dcgm-exporter-s5k48 1/1 Running 0 4h58m 172.23.145.172 10.240.0.15 <none> <none> nvidia-dcgm-exporter-x8vlc 1/1 Running 2 (14m ago) 18m 172.23.137.116 test-coajphf20ooqeeg7u9dg-btsstagevpc-gx316x8-000239a8 <none> <none> nvidia-device-plugin-daemonset-7g5hz 1/1 Running 0 18m 172.23.137.120 test-coajphf20ooqeeg7u9dg-btsstagevpc-gx316x8-000239a8 <none> <none> nvidia-device-plugin-daemonset-xhds2 1/1 Running 0 4h58m 172.23.145.191 10.240.0.15 <none> <none> nvidia-driver-daemonset-416.94.202502260030-0-dkcmh 2/2 Running 0 19m 172.23.137.107 test-coajphf20ooqeeg7u9dg-btsstagevpc-gx316x8-000239a8 <none> <none> nvidia-node-status-exporter-5kvs4 1/1 Running 0 5h 172.23.145.235 10.240.0.15 <none> <none> nvidia-node-status-exporter-94v9f 1/1 Running 0 19m 172.23.137.110 test-coajphf20ooqeeg7u9dg-btsstagevpc-gx316x8-000239a8 <none> <none> nvidia-operator-validator-4wk6z 1/1 Running 0 18m 172.23.137.118 test-coajphf20ooqeeg7u9dg-btsstagevpc-gx316x8-000239a8 <none> <none> nvidia-operator-validator-pz7wm 1/1 Running 0 4h58m 172.23.145.153 10.240.0.15 <none> <none> -
Confirme se o site
gpu-cluster-policyestá pronto.oc get clusterpolicies.nvidia.com gpu-cluster-policyExemplo de saída
NAME STATUS AGE gpu-cluster-policy ready 2025-03-07T03:07:00Z -
Descreva seus nós e confirme as GPUs alocáveis.
oc describe noExemplo de saída
... Capacity: nvidia.com/gpu: 1 ... Allocatable: nvidia.com/gpu: 1
Etapa 8: Migre as cargas de trabalho dependentes de GPU para os nós de trabalho do RHCOS
Agora que os nós de trabalho de GPU do RHCOS têm o driver de GPU instalado e estão prontos para agendamento, migre as cargas de trabalho dependentes de GPU para os nós de trabalho do RHCOS.
-
Migre por pod fazendo o cordoning do nó e excluindo pods individuais.
oc adm cordon no/<nodeName> oc delete po -n <namespace> <podName> -
Migrar por Node drenando os nós. Para obter mais informações, consulte Drenagem segura de um nó.
-
Migre por pool de trabalho, excluindo todo o pool de trabalho do RHEL.
ibmcloud oc worker-pool rm --cluster <clusterNameOrID> --worker-pool <workerPoolNameOrID>
Etapa 9: Remover rótulos do pool de trabalhadores do RHCOS
Remova os rótulos do pool de trabalho que você adicionou em uma etapa anterior. Essa remoção garante que os novos nós de trabalho do RHCOS provisionados posteriormente não tenham esses rótulos e que os componentes da GPU NVIDIA sejam instalados automaticamente.
Etapa 10: Reduzir a escala ou excluir o pool de workers do RHEL 8
Nesse ponto, a migração do driver de GPU NVIDIA está concluída. Você pode reduzir ou excluir os pools de trabalho do RHEL.
ibmcloud oc worker-pool rm --cluster <clusterNameOrID> --worker-pool <workerPoolNameOrID>