AKS의 Ephemeral Storage — 실전 실습 랩

발행: (2026년 3월 1일 오후 07:10 GMT+9)
9 분 소요
원문: Dev.to

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 (메모리 기반)

emptyDirmedium: 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

워크플로우:

  1. Pod가 시작될 때, Kubernetes는 PVC를 생성하고 기본 StorageClass를 사용하여 백업 볼륨을 프로비저닝합니다.
  2. Pod가 삭제될 때, PVC와 해당 볼륨이 자동으로 제거됩니다—누수 없이, 수동 정리 필요 없음.

일반적인 사용 사례는 다음과 같습니다:

  • 데이터 처리 작업
  • 머신러닝 학습용 임시 공간
  • 대규모 일시적 워크로드

일시적 옵션 비교

기능emptyDir (디스크)emptyDir (메모리)일반 일시적 PVC
백업 스토리지노드 로컬 디스크RAM (tmpfs)동적으로 프로비저닝된 볼륨 (예: Azure Disk, AWS EBS)
성능빠른 로컬 I/O초고속 (메모리)프로비저너에 따라 다름 (보통 네트워크 연결)
크기 제한노드 디스크 용량노드 메모리 제한PVC 사양에 정의됨
자동 정리예 (Pod 삭제)예 (Pod 삭제)예 (Pod 삭제)
사용 사례빌드 아티팩트, 임시 파일캐싱, 임시 처리더 큰 저장소가 필요하고 네트워크 기반일 수 있는 작업

일반적인 워크플로

CI/CD 파이프라인

  1. Job start – 저장소를 emptyDir에 복제합니다.
  2. Build – 동일한 emptyDir 안에서 아티팩트를 생성합니다.
  3. Publish – Docker 이미지를 푸시하거나 아티팩트를 업로드합니다.
  4. Job end – Pod가 종료되고 emptyDir가 자동으로 삭제됩니다.

데이터 처리 작업

  1. Download 데이터셋을 Ephemeral PVC에 다운로드합니다.
  2. Transform 데이터를 로컬에서 변환합니다.
  3. Upload 결과를 외부 스토리지에 업로드합니다.
  4. 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가 동일한 데이터에 대한 공유 접근이 필요할 경우.
  • 백업, 스냅샷 또는 장기 보관이 필요할 경우.

이러한 시나리오에서는 일반 PersistentVolumePersistentVolumeClaim을 프로비저닝하십시오.

결론

임시 스토리지는 Kubernetes에서 매우 활용도가 낮은 최적화 기능입니다. 일시적인 워크로드—CI/CD 파이프라인, 배치 처리, 미디어 트랜스코딩, AI 전처리—에 대해 다음을 제공합니다:

  • 속도 (로컬 또는 메모리‑기반 I/O)
  • 단순성 (수동 정리 불필요)
  • 비용 효율성 (남아있는 스토리지 비용 없음)

짧은 수명의 워크로드에 대해 기본값으로 임시 스토리지를 채택하면 성능이 크게 향상되고 운영 오버헤드가 감소하며 클라우드 비용을 절감할 수 있습니다.

0 조회
Back to Blog

관련 글

더 보기 »

vCluster (가상 클러스터)

Kubernetes 야수를 길들이기: vCluster 가상 클러스터 가이드 Kube를 관리할 때 천 개의 불타는 체인톱을 저글링하고 있는 것 같은 느낌을 받은 적이 있나요...