1. Storage
파드는 일회성의 성격을 띄기때문에 파드가 종료하면 파드 내에서 실행되었던 애플리케이션에 의해 변경된 데이터, 로그와 같은 파일들도 같이 삭제됩니다. 이런 데이터들을 파드가 종료되거나 사용하거나 실행중에도 다른 파드에서도 이용할 수 있게 쓰는 방법이 스토리지, 즉 볼륨 기능입니다.
2. emptyDir
empty dir 은 파드가 실행되는 도중에만 필요한 휘발성 데이터들을 각 컨테이너가 함께 사용할 수 있도록 임시 저장공간을 제공해줍니다. 또는 git 에서 내용을 받아 컨테이너를 띄울 경우 초기화컨테이너 기술과 이 볼륨을 사용하면 되는데, 여기서 초기화 컨테이너란 파드의 애플리케이션 컨테이너가 실행되기전 작업을 수행하도록 설정하는 컨테이너를 말합니다. 먼저 초기화컨테이너에 깃 내용을 클론받아서 이 emptyDir 에 저장한 뒤, 실제 애플리케이션 컨테이너에서 해당 볼륨을 참조하여 서비스하는 방식으로 사용합니다.
3. HostPath
노드의 로컬파일 시스템을 파드가 사용할 수 있게 제공해줍니다. 같은 노드의 파드와 컨테이너가 공유디렉토리 목적으로 사용하며 당연히 다른 노드와 볼륨이 공유되지 않습니다. 클러스터 내부사용용도로는 로그파일을 저장하거나, CA 인증서나 토큰을 파드에 제공하기 위해서 사용합니다.
4. PV, PVC
이제 중요 볼륨 기술인 Persistent Volume과 Persistent Volume Claim 에 대해 확인해 보겠습니다. PV는 쿠버네티스와 클러스터 외부 스토리지 연결을 담당하는 리소스이며 PVC는 파드와 이 PV를 연결하기 위한 리소스입니다. PV와 PVC는 반드시 1:1로 추상화된 API로 연결됩니다. 파드와 관계없는 볼륨 리소스를 운영하여 파드의 생명주기와 관계없이 관리할 수 있습니다. 즉 파드가 삭제되어도 PV와 PVC는 남아있습니다.
이런 PV와 PVC를 구성하는 방식으로는 동적과 정적 프로비저닝 방식이 있는데 정적 볼륨 프로비저닝의 경우 PV생성부터 진행해야 합니다. 정적 볼륨 프로비저닝의 경우 관리자가 PV리소스를 생성하고, 개발자가 PVC리소스를 생성하여 서로 연결후 파드에 볼륨을 제공하는 방식이 되는것입니다. 이렇게 매번 파드를 생성할때마다 볼륨을 요청할경우 불편하기때문에 주로 동적 볼륨 프로비저닝을 사용합니다.
그래서 그림과 같이 SC라는 스토리지클래스 컨트롤러를 정의하고, PVC에서 요청하면 SC 리소스에서 PV가 자동으로 프로비저닝 되어 볼륨을 제공해줍니다.
'IT 공부 > PaaS' 카테고리의 다른 글
[K8S] 7. Deployment (0) | 2024.01.19 |
---|---|
[K8S] 6. ConfigMap, Secret (0) | 2024.01.19 |
[K8S] 4. 네트워크 서비스 (0) | 2024.01.16 |
[K8S] 3. 컨트롤러 리소스 (0) | 2024.01.12 |
[K8S] 2. 파드 (1) | 2024.01.11 |