- Primeros pasos
- Requisitos de red
- Requisitos de nodo único e instalación
- Requisitos multinodo e instalación
- Después de la instalación
- Acceso a AI Center
- Aprovisionar un tenant de AI Center
- Actualizar los certificados de Orchestrator e Identity Server
- Cambiar el tamaño de PVC
- Añadir un nuevo nodo al clúster
- Instalación sin conexión de paquetes ML
- Configurar el clúster
- Configurar la instalación posterior a FQDN
- Copia de seguridad y restauración del clúster
- Utilizar la pila de supervisión
- Configurar una autenticación de Kerberos
- Aprovisionar una GPU
- Aprovisionar una GPU
- Utilizar el archivo de configuración
- Programación de nodos
- Migración y actualización
- Guía básica de resolución de problemas
Aprovisionar una GPU
gpu_support
marcador cluster_config.json
desde. A cambio, sigue las siguientes instrucciones para añadir un nodo de agente dedicado con soporte de GPU al clúster.
Actualmente, Automation Suite solo es compatible con los controladores de GPU de Nvidia. Consulta la lista de sistemas operativos compatibles con la GPU.
Para los nodos, puedes encontrar aquí los tipos de instancias específicas para la nube:
Sigue los pasos de Añadir un nuevo nodo al clúster para garantizar que el agente de nodo se añade correctamente.
Para ver más ejemplos sobre cómo implementar NVIDIA CUDA en una GPU, consulta esta página.
- Ejecuta el siguiente comando para instalar el controlador GPU en el agente de nodo:
sudo yum install kernel kernel-tools kernel-headers kernel-devel sudo reboot sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm sudo sed 's/$releasever/8/g' -i /etc/yum.repos.d/epel.repo sudo sed 's/$releasever/8/g' -i /etc/yum.repos.d/epel-modular.repo sudo yum config-manager --add-repo http://developer.download.nvidia.com/compute/cuda/repos/rhel8/x86_64/cuda-rhel8.repo sudo yum install cuda
sudo yum install kernel kernel-tools kernel-headers kernel-devel sudo reboot sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm sudo sed 's/$releasever/8/g' -i /etc/yum.repos.d/epel.repo sudo sed 's/$releasever/8/g' -i /etc/yum.repos.d/epel-modular.repo sudo yum config-manager --add-repo http://developer.download.nvidia.com/compute/cuda/repos/rhel8/x86_64/cuda-rhel8.repo sudo yum install cuda - Ejecuta el siguiente comando para instalar los contenedores de paquetes de herramientas:
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \\ && curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.repo | sudo tee /etc/yum.repos.d/nvidia-docker.repo sudo dnf clean expire-cache sudo yum install -y nvidia-container-runtime.x86_64
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \\ && curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.repo | sudo tee /etc/yum.repos.d/nvidia-docker.repo sudo dnf clean expire-cache sudo yum install -y nvidia-container-runtime.x86_64
Comprueba si los controladores están instalados correctamente
sudo nvidia-smi
en el nodo para comprobar si los controladores se instalaron correctamente.
Llegados a este punto, los controladores de GPU ya se han instalado y se han añadido los nodos de GPU al clúster.
Ejecuta a continuación los dos comandos para actualizar la configuración
cat <<EOF > gpu_containerd.sh
if ! nvidia-smi &>/dev/null;
then
echo "GPU Drivers are not installed on the VM. Please refer the documentation."
exit 0
fi
if ! which nvidia-container-runtime &>/dev/null;
then
echo "Nvidia container runtime is not installed on the VM. Please refer the documentation."
exit 0
fi
grep "nvidia-container-runtime" /var/lib/rancher/rke2/agent/etc/containerd/config.toml &>/dev/null && info "GPU containerd changes already applied" && exit 0
awk '1;/plugins.cri.containerd]/{print " default_runtime_name = \\"nvidia-container-runtime\\""}' /var/lib/rancher/rke2/agent/etc/containerd/config.toml > /var/lib/rancher/rke2/agent/etc/containerd/config.toml.tmpl
echo -e '\
[plugins.linux]\
runtime = "nvidia-container-runtime"' >> /var/lib/rancher/rke2/agent/etc/containerd/config.toml.tmpl
echo -e '\
[plugins.cri.containerd.runtimes.nvidia-container-runtime]\
runtime_type = "io.containerd.runc.v2"\
[plugins.cri.containerd.runtimes.nvidia-container-runtime.options]\
BinaryName = "nvidia-container-runtime"' >> /var/lib/rancher/rke2/agent/etc/containerd/config.toml.tmpl
EOFsudo bash gpu_containerd.sh
cat <<EOF > gpu_containerd.sh
if ! nvidia-smi &>/dev/null;
then
echo "GPU Drivers are not installed on the VM. Please refer the documentation."
exit 0
fi
if ! which nvidia-container-runtime &>/dev/null;
then
echo "Nvidia container runtime is not installed on the VM. Please refer the documentation."
exit 0
fi
grep "nvidia-container-runtime" /var/lib/rancher/rke2/agent/etc/containerd/config.toml &>/dev/null && info "GPU containerd changes already applied" && exit 0
awk '1;/plugins.cri.containerd]/{print " default_runtime_name = \\"nvidia-container-runtime\\""}' /var/lib/rancher/rke2/agent/etc/containerd/config.toml > /var/lib/rancher/rke2/agent/etc/containerd/config.toml.tmpl
echo -e '\
[plugins.linux]\
runtime = "nvidia-container-runtime"' >> /var/lib/rancher/rke2/agent/etc/containerd/config.toml.tmpl
echo -e '\
[plugins.cri.containerd.runtimes.nvidia-container-runtime]\
runtime_type = "io.containerd.runc.v2"\
[plugins.cri.containerd.runtimes.nvidia-container-runtime.options]\
BinaryName = "nvidia-container-runtime"' >> /var/lib/rancher/rke2/agent/etc/containerd/config.toml.tmpl
EOFsudo bash gpu_containerd.sh
Ahora ejecuta el siguiente comando para reiniciar
[[ "$(sudo systemctl is-enabled rke2-server 2>/dev/null)" == "enabled" ]] && systemctl restart rke2-server
[[ "$(sudo systemctl is-enabled rke2-agent 2>/dev/null)" == "enabled" ]] && systemctl restart rke2-agent
[[ "$(sudo systemctl is-enabled rke2-server 2>/dev/null)" == "enabled" ]] && systemctl restart rke2-server
[[ "$(sudo systemctl is-enabled rke2-agent 2>/dev/null)" == "enabled" ]] && systemctl restart rke2-agent
Ejecuta los siguientes comandos desde cualquier nodo del servidor principal.
Accede a la carpeta
cd /opt/UiPathAutomationSuite
cd /opt/UiPathAutomationSuite
DOCKER_REGISTRY_URL=$(cat defaults.json | jq -er ".registries.docker.url")
sed -i "s/REGISTRY_PLACEHOLDER/${DOCKER_REGISTRY_URL}/g" ./Infra_Installer/gpu_plugin/nvidia-device-plugin.yaml
kubectl apply -f ./Infra_Installer/gpu_plugin/nvidia-device-plugin.yaml
kubectl -n kube-system rollout restart daemonset nvidia-device-plugin-daemonset
DOCKER_REGISTRY_URL=$(cat defaults.json | jq -er ".registries.docker.url")
sed -i "s/REGISTRY_PLACEHOLDER/${DOCKER_REGISTRY_URL}/g" ./Infra_Installer/gpu_plugin/nvidia-device-plugin.yaml
kubectl apply -f ./Infra_Installer/gpu_plugin/nvidia-device-plugin.yaml
kubectl -n kube-system rollout restart daemonset nvidia-device-plugin-daemonset
DOCKER_REGISTRY_URL=localhost:30071
sed -i "s/REGISTRY_PLACEHOLDER/${DOCKER_REGISTRY_URL}/g" ./Infra_Installer/gpu_plugin/nvidia-device-plugin.yaml
kubectl apply -f ./Infra_Installer/gpu_plugin/nvidia-device-plugin.yaml
kubectl -n kube-system rollout restart daemonset nvidia-device-plugin-daemonset
DOCKER_REGISTRY_URL=localhost:30071
sed -i "s/REGISTRY_PLACEHOLDER/${DOCKER_REGISTRY_URL}/g" ./Infra_Installer/gpu_plugin/nvidia-device-plugin.yaml
kubectl apply -f ./Infra_Installer/gpu_plugin/nvidia-device-plugin.yaml
kubectl -n kube-system rollout restart daemonset nvidia-device-plugin-daemonset
Las cargas de trabajo de la GPU se programan en los nodos de la GPU automáticamente cuando así lo pide una carga de trabajo. Pero las cargas de trabajo de la CPU normales también pueden programarse en estos nodos, preservando la capacidad. Si quieres que solo se programen las cargas de trabajo de la GPU en estos nodos, puedes añadir taints a estos nodos mediante los siguientes comandos del primer nodo.
nvidia.com/gpu=present:NoSchedule" id="1"/> - las cargas de trabajo externas a la GPU no se programan en este nodo, a menos que así se indique explícitamente nvidia.com/gpu=present:PreferNoSchedule" id="1"/> - esto se convierte en una preferencia en vez de una imposición como la primera opción
Sustituye
kubectl taint node <node-name> <taint-name>
kubectl taint node <node-name> <taint-name>
Para garantizar que los nodos de GPU se han añadido con éxito, ejecuta el siguiente comando en el terminal. La salida debe indicar
kubectl describe node <node-name>
kubectl describe node <node-name>