gpu operator glibc
개요
Amazon Linux 2 GPU AMI에서 GPU Operator 설치 시 발생하는 glibc 버전 호환성과 중복 symlink 문제 해결 방법을 정리합니다. 주요 이슈는 nvidia-container-toolkit의 glibc 2.26 호환성 문제로 인한 파드 실패와 nvidia-operator-validator의 기존 CUDA 설치와의 symlink 충돌로 인한 초기화 실패입니다.
환경
- EKS 1.32
- EKS AMI: amazon-eks-gpu-node-1.32-v20250715 (linux/amd64)
- gpu-operator v25.3.2 (official helm install)
TLDR
Amazon Linux 2 Nvidia GPU 워커노드에서 GPU Operator 운영 시 두 가지 핵심 설정:
- nvidia-container-toolkit:
v1.14.6-ubi8
로 다운그레이드하여 glibc 2.26 호환성 확보 - nvidia-operator-validator:
CUDA_DRIVER_SKIP_DUPLICATE_LINKS=true
환경변수 추가로 중복 symlink 생성 건너뛰기
nvidia-container-toolkit daemonset은 컨테이너가 호스트 GPU를 사용할 수 있도록 런타임 브릿지 역할을 하는 핵심 구성 요소입니다. 이 파드가 먼저 정상 실행되어야 validator가 검증을 통과하고, 이후 다른 GPU 관련 파드들이 순차적으로 정상화됩니다.
설정 가이드
nvidia-operator-validator
gpu-operator가 관리하는 nvidia-operator-validator 파드 관련 설정입니다.
nvidia-operator-validator 파드가 g4dn.xlarge 타입의 GPU 노드에 스케줄링된 이후 CrashLoopBackOff 상태에 빠졌습니다.
gpu-operator-validator는 GPU 노드의 “헬스체크"와 “환경 설정"을 담당하는 게이트키퍼 역할을 하며, 설정한 CUDA_DRIVER_SKIP_DUPLICATE_LINKS 환경변수는 기존 CUDA 설치와의 충돌을 방지하여 멱등한 배포를 보장하는 설정입니다
$ kubectl get pod -n gpu-operator
NAME READY STATUS RESTARTS AGE
gpu-feature-discovery-n4mf8 2/2 Running 0 7m49s
gpu-operator-5798b5b564-xbq5h 1/1 Running 0 7d1h
gpu-operator-node-feature-discovery-gc-86f6495b55-fxgnm 1/1 Running 0 7d1h
gpu-operator-node-feature-discovery-master-694467d5db-6mkmb 1/1 Running 0 14d
gpu-operator-node-feature-discovery-worker-2jwqt 1/1 Running 0 7m58s
nvidia-container-toolkit-daemonset-k9c8r 1/1 Running 0 7m49s
nvidia-dcgm-exporter-sj7p6 1/1 Running 0 7m49s
nvidia-device-plugin-daemonset-wp5p9 2/2 Running 0 7m49s
nvidia-operator-validator-xbf9q 0/1 Init:CrashLoopBackOff 3 (37s ago) 81s
nvidia-operator-validator 파드의 에러로그:
driver-validation time="2025-08-12T02:21:46Z" level=info msg="Creating link /host-dev-char/243:112 => /dev/nvidia-caps/nvidia-cap112"
driver-validation time="2025-08-12T02:21:46Z" level=warning msg="Could not create symlink: symlink /dev/nvidia-caps/nvidia-cap112 /host-dev-char/243:112: file exists"
# ... omitted for brevity ...
driver-validation time="2025-08-12T02:21:46Z" level=info msg="Creating link /host-dev-char/243:136 => /dev/nvidia-caps/nvidia-cap136"
driver-validation time="2025-08-12T02:21:46Z" level=warning msg="Could not create symlink: symlink /dev/nvidia-caps/nvidia-cap136 /host-dev-char/243:136: file exists"
driver-validation time="2025-08-12T02:21:46Z" level=info msg="Creating link /host-dev-char/243:137 => /dev/nvidia-caps/nvidia-cap137"
driver-validation time="2025-08-12T02:21:46Z" level=warning msg="Could not create symlink: symlink /dev/nvidia-caps/nvidia-cap137 /host-dev-char/243:137: file exists
Symlink가 이미 있어, 중복 생성 불가하다는 에러가 반복됩니다.
gpu-operator-validator에 CUDA_DRIVER_SKIP_DUPLICATE_LINKS 환경변수를 추가해서 중복 심링크 생성을 건너뛰도록 설정합니다.
gpu-operator 25.3.2 헬름 차트 설정:
# charts/gpu-operator/values_my.yaml
validator:
repository: nvcr.io/nvidia/cloud-native
image: gpu-operator-validator
# If version is not specified, then default is to use chart.AppVersion
#version: ""
imagePullPolicy: IfNotPresent
imagePullSecrets: []
env: []
args: []
resources: {}
plugin:
env:
- name: WITH_WORKLOAD
value: "false"
- name: CUDA_DRIVER_SKIP_DUPLICATE_LINKS
value: "true"
clusterpolicy 리소스 설정:
# clusterpolicy
spec:
validator:
image: gpu-operator-validator
imagePullPolicy: IfNotPresent
plugin:
env:
- name: WITH_WORKLOAD
value: "false"
- name: CUDA_DRIVER_SKIP_DUPLICATE_LINKS
value: "true"
repository: nvcr.io/nvidia/cloud-native
version: v25.3.2
CUDA_DRIVER_SIP_DUPLICATE_LINKS 환경변수가 추가된 걸 확인할 수 있습니다.
nvidia-container-toolkit
gpu-operator가 관리하는 nvidia-container-toolkit 파드 관련 설정입니다.
원인은 Amazon Linux 2 Nvidia GPU AMI에 설치된 glibc 버전과 Nvidia Toolkit 간의 버전 호환성입니다.
기본적으로 gpu-operator 25.3.2 기준으로 nvidia-toolkit이 v1.17.8-ubuntu20.04 이미지를 사용하도록 되어 있습니다. 이 경우, Amazon Linux 2 Nvidia GPU 머신에 설치된 glibc 2.26 버전과 호환성이 맞지 않아, GPU 노드 검증 단계에서 실패합니다.
EKS GPU 워커노드가 사용하는 glibc 버전은 워커노드에 접속 후 ldd 명령어로 확인할 수 있습니다.
ldd --version
amazon-eks-gpu-node-1.32-v20250715 (linux/amd64) 기준으로 glibc 2.26을 사용합니다.
# In worker node via node-shell pod
$ ldd --version
ldd (GNU libc) 2.26
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.
해결 방법:
이 문제를 해결하기 위해서는 EKS GPU 노드에 배포되는 nvidia toolkit에서 v1.17.8-ubuntu20.04로 선언된 기본값을 v1.14.6-ubi8으로 다운그레이드하면 glibc 2.26과 호환되어 문제가 해결됩니다.
# gpu-operator/values_dev_raptor.yaml (gpu-operator v25.3.2)
toolkit:
enabled: true
repository: nvcr.io/nvidia/k8s
image: container-toolkit
# downgraded to v1.14.6-ubi8 for glibc 2.26 compatibility on amazon linux 2 nodes
# original v1.17.8-ubuntu20.04 requires glibc 2.27+ but nodes only have glibc 2.26
version: v1.14.6-ubi8
imagepullpolicy: ifnotpresent
imagepullsecrets: []
env: []
resources: {}
installdir: "/usr/local/nvidia"
위 .Values.toolkit.version 설정에 의해 nvidia-container-toolkit-daemonset의 이미지 태그 설정이 아래와 같이 반영됩니다.
# gpu-operator/nvidia-container-toolkit-daemonset (daemonset)
spec:
template:
spec:
containers:
- image: nvcr.io/nvidia/k8s/container-toolkit:v1.14.6-ubi8
imagePullPolicy: IfNotPresent
toolkit.version 설정을 변경하면 주로 nvidia-container-toolkit-daemonset 파드가 정상화되고, 이를 통해 연쇄적으로 다음 파드들이 정상화됩니다:
- nvidia-container-toolkit-daemonset: glibc 호환성 문제 해결로 정상 실행
- nvidia-operator-validator: toolkit이 정상화되면서 GPU 노드 검증 통과
관련자료
GPU Operator official docs:
Github Issue: