이 페이지에서는 Kubernetes의 볼륨과 Google Kubernetes Engine(GKE)에서의 사용 방법에 대해 간략하게 설명합니다.
개요
컨테이너에 있는 디스크 상의 파일은 애플리케이션이 데이터를 쓰기에 가장 간단한 장소이지만 이 방법에는 단점이 있습니다. 컨테이너가 비정상 종료되거나 기타 이유로 중지되면 파일이 손실됩니다. 뿐만 아니라 컨테이너에 있는 파일은 동일한 포드에서 실행되는 다른 컨테이너가 액세스할 수 없습니다. Kubernetes 볼륨 추상화는 이 두 가지 문제를 모두 해결합니다.
개념상 볼륨이란 Pod에 있는 모든 컨테이너가 액세스할 수 있는 디렉터리입니다. 포드 사양에서 선언된 볼륨 소스는 디렉터리 생성 방법, 사용되는 스토리지 매체, 디렉터리의 초기 콘텐츠를 결정합니다. Pod는 그것에 포함되는 볼륨과 컨테이너가 볼륨을 마운트하는 경로를 각각 지정합니다.
임시 볼륨 유형은 자신을 둘러싸고 있는 Pod와 수명이 같습니다. 이러한 볼륨은 Pod가 생성될 때 생성되며, 컨테이너가 다시 시작될 때까지 유지됩니다. Pod가 종료되거나 삭제되면 볼륨도 함께 종료 또는 삭제됩니다.
그 밖의 볼륨 유형은 Pod와 독립되어 있는 내구성 있는 스토리지 인터페이스입니다. 임시 볼륨과는 달리 내구성 있는 스토리지가 지원하는 볼륨의 데이터는 Pod가 제거되어도 보존됩니다. 볼륨은 단지 마운트 해제되며 데이터는 다른 Pod에 전달할 수 있습니다. 직접 지정하지 않고 PersistentVolume
리소스를 사용하여 내구성 있는 스토리지 유형의 수명주기를 관리해야 합니다.
볼륨 유형
볼륨마다 스토리지 구현과 초기 콘텐츠가 다릅니다. 사용 사례에 가장 적합한 볼륨 소스를 선택할 수 있습니다. 다음 섹션에서는 몇 가지 일반적인 볼륨 소스에 대해 설명합니다. 볼륨 유형의 전체 목록은 Kubernetes 볼륨 문서를 참조하세요.
emptyDir
emptyDir
볼륨은 Pod의 컨테이너가 읽고 쓸 수 있는 빈 디렉터리를 제공합니다. 어떤 이유로든 노드에서 Pod가 제거되면 emptyDir
의 데이터가 완전 삭제됩니다. emptyDir
볼륨은 노드를 백업하는 모든 매체에 저장됩니다. 이 매체는 환경에 따라 디스크, SSD 또는 네트워크 스토리지일 수 있습니다. emptyDir
볼륨은 스크래치 공간은 물론 Pod의 여러 컨테이너 간에 데이터를 공유하는 데 유용합니다.
모든 emptyDir
마운트는 컨테이너 쓰기 가능 레이어와 로그도 포함하는 노드 임시 스토리지의 일부입니다. 기본적으로 GKE Autopilot은 임시 스토리지를 1GiB로 설정하여 앱에 일부 파일을 만들 수 있는 작은 공간을 제공합니다. 더 많이 필요하거나 더 적게 필요한 경우 ephemeral-storage
에 대한 리소스 요청을 설정하여 배포에서 임시 스토리지를 조정하면 됩니다.
Linux 노드 풀에서 컨테이너를 사용하는 경우 emptyDir.medium
필드를 Memory
로 설정하면 tmpfs(RAM 지원 파일 시스템)를 마운트하도록 Kubernetes에 알릴 수 있습니다. 다만 Windows 서버 컨테이너에서는 지원되지 않습니다.
ConfigMap
ConfigMap
리소스는 포드에 구성 데이터를 주입하는 방법을 제공합니다. ConfigMap
객체에 저장된 데이터는 ConfigMap
유형의 볼륨에서 참조된 후 Pod에서 실행되는 파일을 통해 소비될 수 있습니다. ConfigMap
볼륨의 파일은 ConfigMap
리소스에 의해 지정됩니다.
보안 비밀
Secret
볼륨은 애플리케이션에서 비밀번호, OAuth 토큰, SSH 키와 같은 민감한 정보를 사용할 수 있게 하는 데 사용됩니다. Secret
객체에 저장된 데이터는 Secret
유형의 볼륨에서 참조된 후 포드에서 실행되는 파일을 통해 소비될 수 있습니다.
downwardAPI
downwardAPI
볼륨은 애플리케이션에서 Downward API 데이터를 사용할 수 있게 하는 데 사용됩니다. 이 데이터에는 애플리케이션이 실행되는 Pod와 컨테이너에 대한 정보가 포함됩니다. 예를 들어 Pod의 네임스페이스와 IP 주소가 포함된 DownwardAPIVolumeFile
을 애플리케이션에 노출하도록 Pod를 구성할 수 있습니다. 추가할 수 있는 데이터 유형의 전체 목록은 Downward API 기능을 참조하세요.
PersistentVolumeClaim
PersistentVolumeClaim
볼륨은 클러스터 운영자가 애플리케이션이 사용할 내구성 있는 스토리지를 프로비저닝하는 데 사용할 수 있습니다. Pod는 PersistentVolumeClaim
을 사용하여 이 내구성 있는 스토리지가 지원하는 볼륨을 마운트할 수 있습니다.
다음 단계
- Pod의 볼륨을 참조하는 방법 알아보기
- PersistentVolumes, PersistentVolumeClaims, 동적 스토리지 프로비저닝에 대해 알아보기
- 스토리지에 볼륨을 사용하도록 Pod 구성하기
- 볼륨에 ConfigMap 데이터 추가하기