
파드와 볼륨을 연결하기 위해 사용하는 방법으로 PV와 PVC를 만들어 사용하는 것이 있다. 이 방법은 볼륨이 필요할 때마다 PV를 만들어주어야 하고, 원하는 PV와 연결하기 위해 스토리지, 액세스모드를 확인해서 맞춰야 하기 때문에 복잡하다는 단점이 있다.
이 문제를 해결하기 위해 Dynamic Provisioning을 사용할 수 있다. 사용자가 PVC를 만들면 알아서 PV를 만들어주고 실제 볼륨과 연결해주는 기능이다.
1. Dynamic Provisioning
사전 작업으로, 이 기능을 지원하는 스토리지의 설치가 필요하다. 스토리지를 설치하면 생기는 많은 오브젝트 중, StorageClass라는 오브젝트가 중요하다. 이것을 사용해서 동적으로 PV를 만들 수 있다.
PVC를 만들 때 StorageClassName이라는 부분에 스토리지의 StorageClass의 이름을 넣어주면 자동으로 PV가 만들어지고, 스토리지와 연결해준다.
StorageClassName: storageclass1
2. Status & ReclaimPolicy
- Available
최초 PV가 만들어졌을 때 상태
- Bound
PV와 연결되었을 때 상태. 이 떄는 볼륨의 실제 데이터가 만들어진 상태는 아니고 파드가 PVC를 사용해서 구동될 때 실제 볼륨이 만들어진다. 이 때 파드가 삭제되더라도 데이터에는 문제가 없다.
- Released
PVC가 삭제되어 PV와 연결이 끊어진 상태
만약 이 때 PV에 설정한 ReclaimPolicy가 있다면 상태와 동작 방식이 달라진다.
- Retain
PVC가 삭제되면 PV의 상태가 Released가 되는 옵션이다. ReclaimPolicy를 별도로 설정하지 않았을 때의 Default 값으로, 실제 볼륨의 데이터는 유지되지만, 이 PV를 다른 PVC에 연결할 수는 없다. PV를 삭제할 때도 수동으로 해주어야 한다.
- Delete
PVC를 지웠을 때 PV도 같이 지워진다. StorageClass를 사용해서 자동으로 만들어진 PV의 기본 정책이다. 볼륨의 종류에 따라 실제 데이터가 삭제되기도 하고 안 되기도 한다.
- Recycle
PV의 상태가 Available이 되면서 PVC에 다시 연결할 수 있는 상태가 된다. 실제 데이터가 삭제되면서, PV를 재사용할 수 있다. 하지만 이 Recycle 정책은 Deprecated된 정책이므로 사용을 권장하지는 않는다.
- Failed
PV와 실제 데이터 간에 문제가 생긴 상태