먼저 전체적인 과정부터 보도록 하자.
마운트와 바인드?
"마운트"는 실제로 스토리지를 시스템에 연결하는 행위를 말하고, "바인드"는 쿠버네티스에서 PVC와 PV를 연결하는 논리적인 행위를 말한다.
📥NFS 볼륨
을 생성하고, 이러한 📥NFS 볼륨
과 연동되는 🧊PV
를 ☸️Kubernetes
의 클러스터 영역 내 생성한다.(이 또한 외부 스토리지를 내부 ☸️Kubernetes
영역에 연결하는 것으로 마운트라고 볼 수 있다.)
이후, 사용자는 📃PVC
를 작성하여 적절한 🧊PV
와 바인드한다.
📃PVC
를 통해서 🧊PV
를 교체하거나, 사양을 수정하는 등의 작업을 수행할 수 있다.
사용자는 파드 YAML 내에서 📃PVC
를 이용하여 🧊PV
에 연결(마운트)해서 🧊PV
를 사용하게 된다.
☸️Kubernetes
에서 한 번 생성된 📃PVC
는 일반적으로 직접 수정할 수 없기에, 🧊PV
를 교체하기 위해서는 📃PVC
를 재 생성 하거나, 🧊PV
의 YAML 파일을 수정해 줘야한다.
🧊PV
는 ☸️Kubernetes
클러스터에서 사용 가능한 저장 공간이다.
이러한 🧊PV
는 클러스터 외부의 스토리지를 추상화한 것이다.
🧊PV
에 스토리지의 세부 사항(용량, 접근 모드 등)을 정의하고, 이를 📃PVC
를 통해 파드와 연결하여 스토리지를 동적으로 할당하고 사용할 수 있게 한다.
capacity 필드를 사용하여 PV를 생성할 때 얼마나 많은 스토리지를 사용할 것인지 지정할 수 있다.
단, 🧊PV
의 capacity 설정은📃PVC
를 통해 요청하는 용량과 일치해야 하거나 그 이상이어야 한다.
요청된 용량보다 더 적은 용량을 가진 🧊PV
는 📃PVC
와 바인딩되지 않는다.
📃PVC
는 스토리지에 대한 요구 사항(용량, 액세스 모드 등)을 정의한다.
📃PVC
는 파드를 배포할 때 볼륨 파라메터 부분의 인자 값으로 사용된다.
이를 통해 파드는 클러스터 내의 🧊PV
를 동적으로 할당받아(가장 적절한 PV를 할당) 파드에서 사용할 수 있는 내부 볼륨으로 사용한다.
두가지 형태로 확인해보자. 코드 형태 및 해당 코드를 실제 실행시킨 결과 화면을 보도록 한다.
more..
하지만 이처럼 PV를 직접 미리 생성해두고, PVC로 연결하는 것은 누가봐도 너무나 번거로운 작업이다. 따라서 PVC를 생성하면 자동으로 PV를 생성해주는 StorageClass라는 것을 사용한다.