GPU 노드를 Automation Suite 클러스터에 추가할 때 주의할 점

Automation Suite 2023.10.3 버전에서 확인한 문제입니다. 이 버전을 오프라인으로 설치하면서 이 가이드에 따라 임시 docker registry를 설치하는 경우 GPU 노드를 클러스터에 추가할 때 문제가 발생합니다. GPU 에이전트 노드에 kubernetes를 설치하고 나면 아래의 두 개 pod이 정상적으로 작동하지 않습니다.

kube-system     nvidia-device-plugin-daemonset-xxxxx     0/1     ImagePullBackOff
kube-system     nvidia-device-plugin-daemonset-yyyyy     0/1     ImagePullBackOff

pod를 describe 해보면 아래와 같은 경고 메세지를 볼 수 있습니다.

Failed to pull image “as.UiPath.local:30070/nvidia/k8s-device-plugin:v0.9.0”: rpc error: code = Unknown desc = failed to pull and unpack image “as.UiPath.local:30070/nvidia/k8s-device-plugin:v0.9.0”: failed to resolve reference “as.UiPath.local:30070/nvidia/k8s-device-plugin:v0.9.0”: failed to do request: Head “https://localhost:30071/v2/nvidia/k8s-device-plugin/manifests/v0.9.0?ns=as.uipath.local%3A30070”: dial tcp [::1]:30071: connect: connection refused

yaml 파일에 명시되어 있는 버전 v0.9.0이 docker registry에 존재하지 않아서 발생하는 문제입니다. docker registry에는 v0.14.3 버전만 존재합니다. 이 문제를 피하려면 GPU 에이전트 노드에 kubernetes를 설치하기 전에 아래의 파일에서

/opt/UiPathAutomationSuite/2023.10.3/installer/Infra_Installer/gpu_plugin/nvidia-device-plugin.yaml

이 부분을

- image: REGISTRY_PLACEHOLDER/nvidia/k8s-device-plugin:v0.9.0

와 같이 바꿔주면 됩니다.

- image: REGISTRY_PLACEHOLDER/nvidia/k8s-device-plugin:v0.14.3

만약 이미 GPU 에이전트 노드에 kubernetes를 설치했다면 아래의 커맨드로 해당 pod들의 yaml을 변경해주면 됩니다.

$ kubectl edit pods -n kube-system nvidia-device-plugin-daemonset-xxxxx
$ kubectl edit pods -n kube-system nvidia-device-plugin-daemonset-yyyyy

편집을 마치고 yaml을 저장하면 해당 pod이 곧 아래와 같이 정상적인 상태로 바뀔겁니다.

kube-system     nvidia-device-plugin-daemonset-xxxxx     1/1     Running
kube-system     nvidia-device-plugin-daemonset-yyyyy     1/1     Running
1 Like