728x90
쿠버네티스 볼륨의 이해
쿠버네티스에서의 볼륨은 도커의 볼륨과 같다. 도커에서 볼륨의 역할은 컨테이너가 생명 주기를 넘겨 사라지거나, 문제가 생겨 중단이 됐을 때 컨테이너를 삭제해도 컨테이너에서 다루는 데이터는 별도로 저장하여 다른 컨테이너에서도 액세스 할 수 있게 하는 것이다. 쿠버네티스 역시 마찬가지이며 컨테이너에서 파드(pod)와 클러스터(Cluster)로 그 범위를 확장하여 생각하면 된다.
비영구 볼륨(Non-Persistent Volumes)
- 임시 볼륨이라고도 불린다.
- 파드가 실행되는 동안에만 존재하는 임시 스토리지 솔루션이다.
- 파드가 종료되면 모든 데이터가 손실된다.
- 동일한 파드 내의 컨테이너 간 파일 및 데이터를 공유하거나 단기 작업에 사용된다.
EmptyDir
- 쿠버네티스에서 사용할 수 있는 가장 간단한 유형의 비영구 볼륨 중 하나이다.
- 쿠버네티스 시스템에 의해 생성되고 관리되며 사용하는 파드의 생명 주기와 연결된다.
- 파드가 생성되면 EmptyDir 볼륨도 생성되며 파드가 삭제되면 EmptyDir 볼륨도 삭제되고 볼륨 내 저장된 데이터는 모두 손실된다.
- 개별 파드로 범위가 지정되어 동일한 파드라면 모든 컨테이너에서 액세스 하고 수정할 수 있다.
- 다중 컨테이너 파드에서 컨테이너 간 파일이나 데이터를 공유하는 데 유용하다.
HostPath
- EmptyDir과 달리 HostPath를 사용하면 호스트 노드의 파일 시스템에서 파일이나 디렉터리를 파드와 직접 마운트 할 수 있다.(경로 설정)
- 볼륨 데이터를 쿠버네티스로 관리하지 않으므로 다른 볼륨 유형보다 덜 안전하다고 할 수 있다.
영구 볼륨(Persistent Volumes)
- 파드의 생명 주기가 끝이나도 볼륨 내 데이터를 유지하도록 설계되었다.
- 파드가 종료되거나 이동, 교체되더라도 데이터의 지속성이 필요한 상태 저장 애플리케이션에 적합하다.
- 파드와 노드(Node)에 독립적이며 볼륨의 구성 방식에 대해서도 완전한 권한을 가지고 있다.
- 한 번만 정의하고 원하는 경우에 여러 파드에서 사용할 수 있다.
- 영구 볼륨 클레임을 만들면 파드의 일부가 되지만 파드 옆에 추가되어 클레임이 파드 및 파드가 실행되는 노드에 소속되어 있음을 보여준다.
- 여러 개의 개별적인 영구 볼륨에 대한 클레임을 가질 수 있으며 다양한 노드의 서로 다른 볼륨에 대해서도 서로 다른 클레임을 가질 수 있다.
- 이로 인해 완전한 유연성을 갖는다.
영구 볼륨 클레임(PVC)
- 파드에서 실행 중인 애플리케이션에 파드의 수명을 초과하여 지속될 수 있는 스토리지 리소스가 필요한 경우 생성한다.
- 원하는 스토리지 용량, 액세스 모드, 기타 특성을 지정하여 스토리지에 대한 사양을 지정한다.
- PVC가 생성되면 쿠버네티스 컨트롤 플레인은 PVC에 정의된 요청 스토리지의 특성을 충족하는 적절한 영구 볼륨을 찾아 바인딩한다.
- 이후 영구 볼륨은 클레임과 연결되고 보유하고 있는 데이터는 파드에서 액세스 할 수 있게 된다.
핵심 포인트
- 일반 볼륨을 사용하든 영구 볼륨을 사용하든 상관없이 볼륨을 통해서 데이터를 유지할 수 있다.
- 영구적으로 데이터를 저장할 수 있다는 이유로 영구 볼륨이 무조건적으로 더 좋은 것은 아니다.
- 컨테이너가 재시작되거나 제거 후에 재생성될 때 손실되지 않아야 할 데이터에 도움이 된다고 생각하자.
참고
UDEMY - Docker & Kubernetes : 실전 가이드
chatGPT
728x90
'[DevOps] > Kubernetes' 카테고리의 다른 글
| ReplicationController와 ReplicaSet 간단 정리 (3) | 2023.10.25 |
|---|---|
| CKA 필승 노트 (0) | 2023.10.18 |
| kubernetes - 명령적 접근 방식과 선언적 접근 방식 (2) | 2023.07.19 |
| kubernetes - pod & deployment (0) | 2023.07.17 |
| kubernetes - Service 객체에 대해 알아보고 외부에 파드를 노출시켜보기 (3) | 2023.07.14 |