종료 지향 워크로드와 Kubernetes의 철학적 경계 (CRD를 만들며 배운 것들)

Job 관련 CRD를 계속 개발하다 보면 어느 순간 “왜 이게 이렇게 안 맞지?“라는 느낌을 받게 된다. 도구가 잘못된 건지, 설계가 잘못된 건지, 아니면 제가 뭔가 놓치고 있는 건지. 이 글은 그 느낌의 근원을 추적하다가 도달한 하나의 결론에 대한 이야기입니다. 회사에서 Job 관련 워크로드를 만들면서 부딪힌 마찰들이 모두 같은 뿌리에서 나왔다는 사실을 뒤늦게 깨닫게 되었습니다. Kubernetes의 본질 Kubernetes를 사용하다 보면 “선언적"이라는 단어를 자주 듣는다. 하지만 선언적이라는 말보다 더 정확한 표현은 level-triggered reconciliation라고 봅니다. ...

2026년 5월 27일 · 7 min

Kubernetes 컨테이너에서 MIG 활성화된 GPU 메모리 정보를 안전하게 조회하기

멀티 테넌트 클러스터에서 NVIDIA H100 같은 MIG를 지원하는 GPU를 MIG(Multi‑Instance GPU) 모드로 분할해 사용하면, 컨테이너 내부에서 nvidia-smi 또는 PyNVML 로 전체 GPU(Parent GPU) 메모리 정보를 조회할 때 Insufiicient Permissions오류가 발생할 수 있습니다. 이 글에서는 오류가 발생하는 구조적 이유 컨테이너에 MIG 모니터 권한을 부여해 문제를 해결하는 방법 보안 관점의 모범 사례 를 단계별로 설명합니다. 1. 증상 재현 1‑1. nvidia-smi 오류 $ nvidia-smi --query-gpu=gpu_name,memory.total --format=csv,noheader NVIDIA A100-PCIE-80GB, [Insufficient Permissions] NVIDIA A100-PCIE-80GB, 81920 MiB ... 1‑2. PyNVML 오류 handle = pynvml.nvmlDeviceGetHandleByIndex(0) pynvml.nvmlDeviceGetMemoryInfo(handle) # → pynvml.nvml.NVMLError_NoPermission: Insufficient Permissions Parent GPU를 호출하면 NVML 이 NVML_ERROR_NO_PERMISSION 을 반환하기 때문입니다. ...

2025년 5월 16일 · 2 min

GCP에 VM으로 직접 쿠버네티스 클러스터 구축하는 방법

쿠버네티스(Kubernetes)는 컨테이너화된 애플리케이션의 자동 배포, 스케일링, 운영을 위한 강력한 오케스트레이션 플랫폼입니다. 클라우드 네이티브 환경에서는 관리형 쿠버네티스 서비스(GKE, EKS, AKS 등)를 사용하는 것이 일반적이지만, 직접 구축하는 과정을 통해 쿠버네티스의 아키텍처를 알아 봅시다. 이 가이드에서는 Google Cloud Platform(GCP) 가상 머신에 kubeadm을 사용하여 쿠버네티스 클러스터를 구축하는 전체 과정을 설명합니다. 버전 호환성 주의 본 문서는 kubeadm v1.33을 기준으로 작성되었습니다. 일치하는 버전이 아닌 경우 항상 공식 문서를 확인하세요. 알려진 문제점: Ubuntu 22.04 LTS + Kubernetes v1.32 커널 6.8.0-56-generic 이상에서 iptables의 MARK 확장 기능에 회귀(regression) 버그가 존재하여 Failed to execute iptables-restore 오류가 발생할 수 있습니다. Ubuntu 24.04 LTS와 Kubernetes v1.33 이상에서는 정상 동작이 확인되었습니다. ...

2025년 5월 13일 · 9 min