IL-0171 Inflab · 2025-08-27 (게시일)kubernetesawsai-infra
Inflab 은 Amazon EKS 1.32 클러스터에서 Bottlerocket AMI amazon/bottlerocket-aws-k8s-1.32-nvidia-aarch64-v1.39.1-3a880b44 와 g5g.xlarge GPU 인스턴스로 강의 영상 업스케일링 작업을 돌렸다. 노드는 Karpenter v1.4.0 이 관리했다. 전에는 Bottlerocket 노드에서 메모리가 부족해 kubelet 이 OOM 으로 죽으면, EC2 인스턴스는 살아 있는데 쿠버네티스에서는 Unknown 으로 보이는 좀비 노드가 생겼다. 이를 정리하려고 Karpenter 의 nodeRepair 기능 게이트를 켰다. Node Auto-Repair 는 Karpenter v1.1.0 부터 들어간 알파 기능이다.
이 AMI 에는 NVIDIA DCGM 라이브러리인 libdcgm.so 가 없었다. DCGM 은 데이터센터 GPU 의 상태와 이벤트를 모으는 NVIDIA 관리 도구다. 라이브러리가 없어도 GPU 연산은 되지만 DCGM 으로 GPU 상태를 볼 수는 없다. 노드가 Ready 가 되고 약 1분 뒤 DCGM 초기화가 실패하면서 AcceleratedHardwareReady 노드 컨디션이 False 가 됐다.
Karpenter Node Auto-Repair 는 Ready=False, Ready=Unknown, MemoryPressure=True, DiskPressure=True, PIDPressure=True, NetworkUnavailable=True 와 함께 AcceleratedHardwareReady=False 도 비정상 노드로 본다. 비정상 컨디션을 찾으면 컨디션이 바뀐 시각에 정책의 유예 시간을 더한 종료 시각까지 기다렸다가 NodeClaim 을 지운다. 그래서 노드는 Ready 뒤 약 10~11분 만에 교체됐고, 새 노드도 같은 AMI 를 써서 같은 일이 끝없이 되풀이됐다.
팀은 DCGM 라이브러리를 직접 설치하는 방법, 다른 AMI 를 쓰는 방법, Node Auto-Repair 를 끄는 방법을 비교했다. Bottlerocket 은 불변 OS 라 직접 설치가 어려웠고, AMI 를 바꾸면 기존 인프라를 바꾸는 부담이 컸다. 팀은 바로 적용할 수 있는 Node Auto-Repair 끄기를 골랐다. 다만 이 방법은 임시 해결책이다.
강의 영상 업스케일링용 GPU 파드를 띄우자 GPU 노드가 정상적으로 만들어져 Ready 가 됐다가, 약 10~11분 뒤 갑자기 비정상으로 판정되어 Karpenter 가 노드를 교체했다. 새로 만든 노드에서도 같은 일이 되풀이됐고, GPU 파드가 계속 재시작되어 작업이 진행되지 않았다.
노드 이벤트에서 핵심 메시지를 찾았다. Karpenter 가 남긴 AcceleratedHardwareReady 이벤트에서 상태가 True 에서 False 로 바뀌었고, Reason 은 DCGMError, Message 는 "failed to initialize DCGM: libdcgm.so not Found" 였다.
이벤트를 시간 순서로 보면 kube-proxy 시작, NodeAllocatableEnforced, NodeReady 까지는 정상이었다. 노드가 Ready 가 되고 약 1분 뒤 AcceleratedHardwareReady 가 False 로 바뀌었다. 이어서 NodeRepairBlocked 경고가 "more than 20% nodes are unhealthy in the nodepool" 메시지로, FailedDraining 경고가 "Failed to drain node, 1 pods are waiting to be evicted" 메시지로, InstanceTerminating 경고가 "Instance is terminating" 메시지로 차례로 찍혔다.
GPU 노드가 Ready 뒤 10~11분 만에 계속 교체되는 것을 보고 노드 이벤트를 분석해 DCGMError 메시지를 찾았다.
–
Karpenter Node Auto-Repair 는 AcceleratedHardwareReady=False 도 노드를 교체할 사유로 본다. 그래서 GPU 연산에는 문제가 없어도 GPU 모니터링 라이브러리 하나가 빠지면 노드가 끝없이 교체될 수 있다. Node Auto-Repair 를 켠 뒤 GPU 노드가 자주 교체되면 이 기능을 꺼 볼 만하다. 좀비 노드 문제는 이제 메모리가 4GB 이상인 인스턴스 타입을 써서 완화했다.
같은 원인 · 공통 노드 운영체제 이미지
같은 원인 · 공통 GPU 드라이버
같은 원인 · 공통 노드 운영체제 이미지
같은 원인 · 공통 노드 운영체제 이미지
같은 원인 · 공통 노드 운영체제 이미지
같은 원인 · 공통 노드 운영체제 이미지