AKS의 Ephemeral Storage — 실전 실습 랩
I’m happy to translate the article for you, but I’ll need the full text of the post (the paragraphs, headings, lists, etc.) in order to do so. Could you please paste the content you’d like translated? I’ll keep the source link at the top exactly as you’ve shown and preserve all formatting, code blocks, URLs, and technical terms while translating the rest into Korean.
왜 Ephemeral Storage를 사용하나요?
Ephemeral storage는 Pod의 수명을 초과하여 데이터를 유지할 필요가 없는 워크로드에 이상적입니다. 예시:
- CI/CD 파이프라인
- 배치 작업
- 비디오 트랜스코딩
- ETL 파이프라인
- AI 전처리
이러한 경우에 영구 볼륨을 사용하면 다음과 같은 문제가 발생할 수 있습니다:
- 비용 증가
- 라이프사이클 복잡성 증가
- 사용되지 않는 PVC 누수
- I/O 속도 저하
Ephemeral storage 원시 타입은 빠르고 자동으로 정리되며, 노드 로컬 디스크 또는 메모리에서 동작합니다.
일시적 스토리지 프리미티브
Kubernetes는 일시적인 스토리지를 위해 여러 내장 메커니즘을 제공합니다:
| 프리미티브 | 백업 | 특징 |
|---|---|---|
emptyDir (disk) | 노드 로컬 디스크 | 빠른 로컬 스토리지, Pod와 함께 삭제됨 |
emptyDir (memory) | RAM (tmpfs) | 매우 빠름, 디스크 I/O 없음, 메모리 초과 시 Pod가 퇴출될 수 있음 |
| Generic Ephemeral PVC | 동적 프로비저너(StorageClass 통해) | Pod에 한정, Pod가 삭제될 때 자동으로 삭제됨 |
emptyDir (디스크 기반)
가장 간단한 형태의 일시적 스토리지입니다. Pod가 시작될 때 생성되고, Pod가 실행되는 동안 존재하며, Pod가 삭제될 때 제거됩니다.
apiVersion: v1
kind: Pod
metadata:
name: emptydir-disk
spec:
containers:
- name: writer
image: busybox
command: ["/bin/sh", "-c"]
args:
- |
dd if=/dev/zero of=/scratch/test.img bs=1M count=100
sleep 600
volumeMounts:
- mountPath: /scratch
name: scratch
volumes:
- name: scratch
emptyDir: {}
Result: /scratch 아래에 100 MiB 파일이 생성됩니다. 데이터는 노드 로컬 디스크에 저장되며 Pod가 삭제될 때 사라집니다—CI 빌드 아티팩트나 일시적인 데이터 변환에 적합합니다.
emptyDir (메모리 기반)
emptyDir를 medium: Memory로 설정하여 RAM에 마운트합니다. 이는 tmpfs 마운트를 생성합니다.
apiVersion: v1
kind: Pod
metadata:
name: emptydir-memory
spec:
containers:
- name: writer
image: busybox
command: ["/bin/sh", "-c"]
args:
- |
dd if=/dev/zero of=/scratch/test.img bs=1M count=100
sleep 600
volumeMounts:
- mountPath: /scratch
name: memvol
volumes:
- name: memvol
emptyDir:
medium: Memory
특징:
- 매우 빠름 (RAM 접근)
- 디스크 I/O 없음
- 캐시 또는 임시 처리에 이상적
⚠️ 주의: 메모리 제한을 초과하면 Pod가 퇴출될 수 있습니다.
Generic Ephemeral PVC (동적)
Kubernetes는 Pod에 한정된 임시 PersistentVolumeClaim(PVC)을 생성할 수 있습니다. PVC는 Pod가 종료될 때 자동으로 삭제됩니다.
apiVersion: v1
kind: Pod
metadata:
name: eph-pvc
spec:
containers:
- name: app
image: busybox
command: ["/bin/sh", "-c"]
args:
- |
echo "using temporary storage"
sleep 600
volumeMounts:
- mountPath: /data
name: eph
volumes:
- name: eph
ephemeral:
volumeClaimTemplate:
spec:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 1Gi
워크플로우:
- Pod가 시작될 때, Kubernetes는 PVC를 생성하고 기본
StorageClass를 사용하여 백업 볼륨을 프로비저닝합니다. - Pod가 삭제될 때, PVC와 해당 볼륨이 자동으로 제거됩니다—누수 없이, 수동 정리 필요 없음.
일반적인 사용 사례는 다음과 같습니다:
- 데이터 처리 작업
- 머신러닝 학습용 임시 공간
- 대규모 일시적 워크로드
일시적 옵션 비교
| 기능 | emptyDir (디스크) | emptyDir (메모리) | 일반 일시적 PVC |
|---|---|---|---|
| 백업 스토리지 | 노드 로컬 디스크 | RAM (tmpfs) | 동적으로 프로비저닝된 볼륨 (예: Azure Disk, AWS EBS) |
| 성능 | 빠른 로컬 I/O | 초고속 (메모리) | 프로비저너에 따라 다름 (보통 네트워크 연결) |
| 크기 제한 | 노드 디스크 용량 | 노드 메모리 제한 | PVC 사양에 정의됨 |
| 자동 정리 | 예 (Pod 삭제) | 예 (Pod 삭제) | 예 (Pod 삭제) |
| 사용 사례 | 빌드 아티팩트, 임시 파일 | 캐싱, 임시 처리 | 더 큰 저장소가 필요하고 네트워크 기반일 수 있는 작업 |
일반적인 워크플로
CI/CD 파이프라인
- Job start – 저장소를
emptyDir에 복제합니다. - Build – 동일한
emptyDir안에서 아티팩트를 생성합니다. - Publish – Docker 이미지를 푸시하거나 아티팩트를 업로드합니다.
- Job end – Pod가 종료되고
emptyDir가 자동으로 삭제됩니다.
데이터 처리 작업
- Download 데이터셋을 Ephemeral PVC에 다운로드합니다.
- Transform 데이터를 로컬에서 변환합니다.
- Upload 결과를 외부 스토리지에 업로드합니다.
- Terminate – PVC가 삭제되어 잔여 비용이 남지 않습니다.
모범 사례
- 항상 설정
ephemeral-storage리소스 요청 및 제한 Pods에 대해. - 작고 빠른 임시 공간에는
emptyDir을 선호하고, I/O 지연을 최소화해야 할 경우 메모리‑백드emptyDir을 사용하십시오. - 더 큰 볼륨이나 특정 스토리지 클래스를 필요로 할 때는 Generic Ephemeral PVC를 사용하십시오 (예: Azure Managed Disk).
- 최대 성능 및 비용 효율성을 위해 local SSD nodes, ephemeral OS disks, 또는 autoscaling node pools와 에페머럴 볼륨을 결합하십시오.
Persistent Volume을 사용해야 할 때
다음 중 하나라도 해당되면 임시 스토리지를 피하십시오:
- 데이터가 Pod 재시작이나 노드 장애 후에도 살아 있어야 할 경우.
- 여러 Pod가 동일한 데이터에 대한 공유 접근이 필요할 경우.
- 백업, 스냅샷 또는 장기 보관이 필요할 경우.
이러한 시나리오에서는 일반 PersistentVolume 및 PersistentVolumeClaim을 프로비저닝하십시오.
결론
임시 스토리지는 Kubernetes에서 매우 활용도가 낮은 최적화 기능입니다. 일시적인 워크로드—CI/CD 파이프라인, 배치 처리, 미디어 트랜스코딩, AI 전처리—에 대해 다음을 제공합니다:
- 속도 (로컬 또는 메모리‑기반 I/O)
- 단순성 (수동 정리 불필요)
- 비용 효율성 (남아있는 스토리지 비용 없음)
짧은 수명의 워크로드에 대해 기본값으로 임시 스토리지를 채택하면 성능이 크게 향상되고 운영 오버헤드가 감소하며 클라우드 비용을 절감할 수 있습니다.