Kubernetes - Volume - Dynamic Provisioning, StorageClass, Status, ReclaimPolicy

현시기얌·2022년 1월 17일
0

Kubernetes

목록 보기
14/23

Volume

Volume은 데이터를 안정적으로 유지하기 위해서 사용한다.
그러기 위해서 실제 데이터는 쿠버네티스 Cluster와 분리되서 관리된다.
그리고 이런 방식으로 관리될 수 있는 Volume의 종류들이 많은데
크게 내부망에서 관리하는 경우와 외부망에서 관리하는 경우 2가지로 분류할 수 있다.

외부망에는 AWS, Google Colud, Azure 같은 클라우드 Storage를 두고 여기에 쿠버네티스 Cluster와 연결하여 사용할 수 있다.

내부망에는 쿠버네티스를 구성하는 Node들이 있는데 기본적으로 쿠버네티스에서 이 Node들의 실제 물리적인 공간에 데이터를 만들 수 있는 hostPath나 localVolume이 있고 별도의 On-Premise Storage Solution들을 Node들에 설치할 수 있다.
또한 NFS를 사용해서 다른 서버를 Volume 자원으로 사용할 수 있다.

쿠버네티스 Cluster 밖에 실제 Volume들이 마련되어 있다면 관리자는 PV를 만드는데 저장 용량과 AccessMode를 정하고 Volume을 선택해서 연결한다.

사용자는 원하는 용량과 AccessMode로 PVC를 만들면 쿠버네티스가 알아서 적절한 PV와 연결을 해준다. 그리고 이 PVC를 Pod가 사용하게 된다.

AccessMode
1. ReadWriteOnce : 한 Node에서 읽기 쓰기
2. ReadOnlyMany : 여러 Node에서 읽기
3. ReadWriteMany : 여러 Node에서 읽기 쓰기

하지만 쿠버네티스에서 이렇게 AccessMode가 있다고 해서 실제 Volume들도 모두 이와 같이지원되는 것이 아니고 각각의 Volume들마다 지원되는 AccessMode가 다르다.

하지만 이런식으로 사용한다면 Volume을 사용할 때마다 PV를 만들어줘야되고 또 원하는 PV와 연결을 할려고 Storage와 AccessMode를 확인해서 맞춰야하고 너무 복잡해진다.

그래서 쿠버네티스는 Dynamic Provisioning이란 것을 지원해준다.
Dynamic Provisioning은 사용자가 PVC를 만들면 알아서 PV를 만들어주고 실제로 Volume과 연결해준다.

모든 PV에는 각각의 상태들이 존재한다. (Available, Released, Bound, Failed)

Dynamic Provisioning

Storage Solution을 선택해서 설치를 해야 한다.

설치를 하면 Service, Pod등 여러 Object들이 생성된다.
Obejct들 중에 가장 중요한 Object는 StorageClass다.

StorageClass 사용해서 동적으로 PV를 만들 수 있는데 PVC를 만들 때 StorageClassName
이라는 부분이 있다.
StorageClassName: "" 이면 적절한 PVC를 찾아준다.
StorageClassName: 만들어져 있는 StorageClassName 이름
--> 자동으로 StorageOs Volume을 가진 PV가 만들어진다.

StorageClass는 추가로 만들 수 있고 default라는 걸 설정할 수 있다.
이렇게 만들어 놓으면 PVC에 StorageClass 이름을 생략을 했을 때 default StorageClass가 적용이 되서 PV가 만들어진다.

Status & ReclaimPolicy

Status

Status는 최초 PV가 만들어 졌을 때 Available 상태다.
PVC와 만나게 되면 Bound 상태다.
PV를 직접 만드는 경우에는 아직 Volume에 실제 데이터가 만들어져 있는 상태가 아니고 Pod가 PVC를 사용해서 구동이 될 때 실제 Volume이 만들어 진다.

Pod에 서비스가 유지가 되다가 Pod가 삭제될 경우에는 PVC와 PV에는 아무런 변화가 없기 때문에 데이터에는 문제가 없다.

PVC를 삭제해야지만 PV와 연결이 끊어지면서 PV의 상태는 Released가 된다.

PV와 실제 데이터간에 문제가 생기면 PV의 상태는 Failed 상태가 된다.

ReclaimPolicy

PVC가 삭제가 되었을 때 상황에 대해서 PV의 ReclaimPolicy에 따라서 PV에 대한 상태가 달라진다.

ReclaimPolicy에는 Retain, Delete, Recycle이 있다.

  1. Retain: PVC가 삭제가 되면 PV의 상태가 Released가 된다.
  • Default
  • 실제 Volume의 데이터 보존된다.
  • 재사용 불가 (PV를 다른 PVC에 연결할 수 없다.)
  1. Delete: PVC가 삭제가 되면 PV도 같이 지워진다.
  • StorageClass 사용시 Default
  • Volume에 따라 데이터 삭제되기도 하고 안되기도 한다.
  • 재사용 불가
  1. Recycle: PVC가 삭제가 되면 PV의 상태가 Available이 된다.
  • Deprecated
  • 데이터 삭제
  • 재사용 가능
profile
현시깁니다

0개의 댓글