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