반응형

온프레미스 쿠버네티스 환경에서 NAS 스토리지와 GPU 가속을 RKE2에 연동하는 방법을 단계별로 알려드립니다. AI 학습부터 대용량 데이터 처리까지 모든 워크로드를 이용해 보세요.
NAS 스토리지 연동: NFS 프로비저너 설치
RKE2는 NFS를 통해 NAS 스토리지를 동적 프로비저닝할 수 있습니다.
NFS 서버 설정
# NFS 서버(Ubuntu)에서 실행
sudo apt update
sudo apt install -y nfs-kernel-server
# NFS 공유 디렉토리 생성
sudo mkdir -p /nfs_share
sudo chown nobody:nogroup /nfs_share
sudo chmod 755 /nfs_share
# NFS 내보내기 설정
sudo tee -a /etc/exports /data/gpu-test.txt
cat /data/gpu-test.txt
while true; do sleep 3600; done
resources:
limits:
nvidia.com/gpu: 1
memory: "4Gi"
cpu: "2"
requests:
nvidia.com/gpu: 1
memory: "2Gi"
cpu: "1"
volumeMounts:
- mountPath: /data
name: nas-volume
env:
- name: NVIDIA_VISIBLE_DEVICES
value: "all"
- name: NVIDIA_DRIVER_CAPABILITIES
value: "compute,utility"
volumes:
- name: nas-volume
persistentVolumeClaim:
claimName: gpu-nas-pvc
restartPolicy: NeverAI/ML 워크로드 예시
apiVersion: apps/v1
kind: Deployment
metadata:
name: pytorch-training
spec:
replicas: 1
selector:
matchLabels:
app: pytorch-training
template:
metadata:
labels:
app: pytorch-training
spec:
runtimeClassName: nvidia
containers:
- name: pytorch
image: pytorch/pytorch:2.1.0-cuda12.1-cudnn8-runtime
command: ["/bin/bash", "-c"]
args:
- |
python -c "
import torch
print(f'CUDA available: {torch.cuda.is_available()}')
print(f'GPU count: {torch.cuda.device_count()}')
if torch.cuda.is_available():
print(f'GPU name: {torch.cuda.get_device_name(0)}')
"
sleep 3600
resources:
limits:
nvidia.com/gpu: 1
volumeMounts:
- name: training-data
mountPath: /workspace/data
- name: model-output
mountPath: /workspace/models
volumes:
- name: training-data
persistentVolumeClaim:
claimName: gpu-nas-pvc
- name: model-output
persistentVolumeClaim:
claimName: gpu-nas-pvc문제 해결 핵심 포인트
| 증상 | 원인 | 해결책 |
|---|---|---|
| PVC "Pending" 상태 | NFS 경로 접근 실패 | showmount -e로 연결 확인 |
| GPU 인식 실패 | 드라이버 버전 불일치 | nvidia-smi로 드라이버 상태 점검 |
| 컨테이너 실행 오류 | runtimeClass 미설정 | 파드에 runtimeClassName: nvidia 추가 |
| NFS 마운트 실패 | 권한 문제 | /etc/exports에 no_root_squash 추가 |
| GPU 메모리 부족 | 리소스 제한 미설정 | GPU 메모리 제한 설정 |
상세 트러블슈팅
# NFS 연결 문제 진단
showmount -e 192.168.1.100
sudo mount -t nfs -v 192.168.1.100:/nfs_share /mnt/test
# GPU 상태 확인
nvidia-smi
kubectl describe node | grep nvidia.com/gpu
kubectl get pods -n gpu-operator-resources
# 컨테이너 런타임 확인
sudo /var/lib/rancher/rke2/bin/crictl info | grep nvidia
sudo /var/lib/rancher/rke2/bin/ctr --namespace k8s.io container ls | grep nvidia
# 로그 확인
kubectl logs -n nfs-provisioner deployment/nfs-client-nfs-subdir-external-provisioner
kubectl logs -n gpu-operator-resources daemonset/nvidia-device-plugin-daemonset성능 최적화
# NFS 마운트 옵션 최적화
mount -t nfs -o nfsvers=4.1,hard,intr,rsize=1048576,wsize=1048576 \
192.168.1.100:/nfs_share /mnt/test
# GPU 메모리 사용량 모니터링
kubectl top node --sort-by=memory
watch -n 1 nvidia-smi실제 사용 사례
데이터 과학 워크벤치
apiVersion: v1
kind: Pod
metadata:
name: jupyter-gpu
spec:
runtimeClassName: nvidia
containers:
- name: jupyter
image: tensorflow/tensorflow:latest-gpu-jupyter
ports:
- containerPort: 8888
resources:
limits:
nvidia.com/gpu: 1
volumeMounts:
- name: notebooks
mountPath: /tf/notebooks
- name: datasets
mountPath: /tf/datasets
volumes:
- name: notebooks
persistentVolumeClaim:
claimName: jupyter-notebooks-pvc
- name: datasets
persistentVolumeClaim:
claimName: shared-datasets-pvc분산 학습 환경
apiVersion: kubeflow.org/v1
kind: PyTorchJob
metadata:
name: distributed-training
spec:
pytorchReplicaSpecs:
Master:
replicas: 1
template:
spec:
runtimeClassName: nvidia
containers:
- name: pytorch
image: pytorch/pytorch:latest
resources:
limits:
nvidia.com/gpu: 1
volumeMounts:
- name: training-data
mountPath: /workspace/data
volumes:
- name: training-data
persistentVolumeClaim:
claimName: training-data-pvc
Worker:
replicas: 3
template:
spec:
runtimeClassName: nvidia
containers:
- name: pytorch
image: pytorch/pytorch:latest
resources:
limits:
nvidia.com/gpu: 1마무리
RKE2와 NAS·GPU의 조합은 AI 학습부터 빅데이터 분석까지 모든 워크로드를 아우릅니다. 첫 단계는 NFS 프로비저너 설치부터 시작해보세요. GPU 가속 파드로 변환하는 데는 단 3줄의 YAML 수정만 필요합니다. 지금 바로 온프레미스 인프라의 잠재력을 최대한 끌어올려보세요.
핵심 포인트:
- NFS 동적 프로비저닝으로 대용량 데이터 공유
- NVIDIA Container Toolkit 통합으로 GPU 가속 지원
- runtimeClassName: nvidia 설정으로 GPU 접근
- PVC ReadWriteMany 모드로 다중 Pod 데이터 공유
- Helm 차트 활용으로 간편한 설치 및 관리
온프레미스 환경에서도 클라우드 수준의 AI/ML 인프라를 구축할 수 있으며, 데이터 주권과 비용 효율성을 동시에 확보할 수 있습니다.
반응형
'IT기술 > 쿠버네티스 (k8s)' 카테고리의 다른 글
| RKE2 고가용성(HA) 클러스터 완벽 가이드: 엔터프라이즈급 쿠버네티스 인프라 구축 (2) | 2025.07.16 |
|---|---|
| Rancher와 RKE2 완벽 가이드: 차세대 쿠버네티스 플랫폼 구축과 자동화 (4) | 2025.07.14 |
| RKE2 스토리지 완벽 가이드: 로컬부터 분산 스토리지까지 모든 환경 대응 전략 (0) | 2025.07.11 |
| RKE1 vs RKE2 CNI 플러그인 완벽 가이드: 쿠버네티스 네트워킹의 미래를 선택하는 방법 (2) | 2025.07.10 |
| RKE2 보안 완벽 가이드: 기업과 정부를 위한 차세대 보안 쿠버네티스 (4) | 2025.07.10 |