본문 바로가기
클라우드/쿠버네티스

📦 그림 한 장으로 끝내는 쿠버네티스 볼륨(Volume) 구조와 원리

by gasbugs 2025. 12. 11.

안녕하세요! 오늘은 쿠버네티스에서 가장 중요한 개념 중 하나인 '볼륨(Volume)'에 대해 이야기해 보려 합니다.

쿠버네티스를 처음 접할 때 가장 헷갈리는 부분이 바로 "컨테이너가 죽으면 내 데이터는 어떻게 되지?"라는 점인데요. 위 그림을 하나씩 뜯어보면서, 쿠버네티스가 어떻게 데이터를 안전하게 보관하고 컨테이너끼리 공유하는지 완벽하게 정리해 드리겠습니다. 🚀


1. 왜 '볼륨'이 필요할까요? 🤷‍♂️

기본적으로 컨테이너는 '휘발성(Ephemeral)'입니다. 컨테이너 내부에서 파일을 만들고 저장해도, 컨테이너가 재시작되거나 삭제되면 그 안의 데이터도 연기처럼 사라집니다.

하지만 데이터베이스나 로그 파일처럼 사라지면 안 되는 데이터도 있겠죠? 또는 한 파드 안에 있는 여러 컨테이너가 데이터를 공유해야 할 때도 있습니다. 이때 등장하는 것이 바로 볼륨(Volume)입니다.


2. 그림으로 보는 구조 분석 🔍

위 그림은 크게 파드(Pod) 내부외부 스토리지로 나뉩니다. 하나씩 살펴볼까요?

① 파드(Pod)와 컨테이너의 관계

그림의 가장 안쪽을 보면 Pod라는 큰 상자 안에 컨테이너1과 컨테이너2가 있습니다.

  • 파일 시스템: 각 컨테이너는 자신만의 독립적인 파일 시스템을 가집니다.
  • Mount (마운트): 그런데 그림을 보면 두 컨테이너 모두 /my-path라는 경로가 화살표를 통해 중앙의 volumes 원통으로 연결되어 있죠? 이것이 바로 마운트입니다.
  • 데이터 공유: 이렇게 되면 컨테이너1이 /my-path에 파일을 쓰면, 컨테이너2도 /my-path에서 똑같은 파일을 읽을 수 있게 됩니다. 한 지붕 두 가족이 냉장고를 같이 쓰는 것과 같죠! 🏠

② 다양한 볼륨의 종류 (우측 박스들)

파드 중앙에 있는 volumes는 실제로 어디에 저장될까요? 그림 오른쪽의 세 가지 박스가 그 해답입니다.

  • 📁 emptyDir (임시 저장소)
    • 이름 그대로 처음엔 '비어 있는(empty)' 디렉토리입니다.
    • 파드가 생성될 때 만들어지고, 파드가 삭제되면 같이 삭제됩니다.
    • 용도: 주로 캐시(Cache) 데이터나, 컨테이너끼리 임시로 데이터를 교환할 때 사용합니다. 빠르고 간편하지만 영구 저장은 안 돼요!
  • 💻 hostPath (노드 직접 연결)
    • 그림의 가장 큰 테두리인 Kubernetes Node의 파일 시스템을 직접 사용합니다.
    • 파드가 노드의 특정 경로(예: /var/log)를 직접 쳐다보는 방식입니다.
    • 용도: 주로 모니터링 툴이나 시스템 관련 컨테이너가 노드의 상태를 읽어야 할 때 사용합니다. 보안상 주의가 필요해요! ⚠️
  • ☁️ Network Storage (네트워크 스토리지)
    • 이것이 데이터 영구 보존의 핵심입니다.
    • 그림에서 화살표가 Kubernetes Node 밖으로 나가서 스토리지 서비스의 영구 디스크로 연결되는 것이 보이시나요?
    • AWS EBS, Azure Disk, NFS 같은 외부 저장소를 연결합니다.
    • 장점: 파드가 죽거나, 심지어 노드가 고장 나서 파드가 다른 노드로 이사를 가도 데이터는 안전하게 외부 스토리지에 남아있기 때문에 그대로 다시 연결해서 쓸 수 있습니다. 🛡️

3. 요약: 데이터의 흐름 🌊

그림의 흐름을 한 문장으로 요약하면 다음과 같습니다.

"컨테이너 내부의 /my-path에 데이터를 저장하면 ➡️ 파드 내부의 volume을 거쳐 ➡️ 실제 저장소(emptyDir, hostPath, 또는 외부 디스크)에 기록된다."

이 구조 덕분에 개발자는 컨테이너가 죽든 살든 걱정 없이, 데이터를 안전하게 관리하고 활용할 수 있는 것이죠.


💡 마치며

쿠버네티스 볼륨은 복잡해 보이지만, "컨테이너와 스토리지를 연결해 주는 다리"라고 생각하면 쉽습니다.

  • 잠깐 쓰고 버릴 데이터 👉 emptyDir
  • 노드의 정보가 필요할 때 👉 hostPath
  • 절대 잃어버리면 안 되는 데이터 👉 Network Storage (PVC/PV)

이 세 가지만 기억해도 쿠버네티스 스토리지의 절반은 이해하신 겁니다! 다음 포스팅에서는 실제 설정 파일(YAML)을 어떻게 작성하는지 다뤄보겠습니다. 👋