스터디/[쿠버네티스 인 액션] (2024.8)

[쿠버네티스 인 액션] 6장.볼륨 - 퍼시스턴트볼륨과 퍼시스턴트볼륨클레임 +참고영상

ttoance 2024. 9. 29. 00:03

이상적으로 쿠버네티스에 애플리케이션을 배포하는 개발자는 기저에 어떤 종류의 스토리지 기술이 사용되는지 알 필요가 없어야 하고, 

동일한 방식으로 파드를 실행하기 위해 어떤 유형의 물리 서버가 사용되는지 알 필요가 없어야 한다. 

 

6.5 퍼시스턴트볼륨과 퍼시스턴트볼륨클레임 소개 

- 퍼시스턴트볼륨 PV PersistentVolume

- 퍼시스턴트볼륨클레임 PVC PersistentVolumeClaim

 

- 개발자가 파드에 기술적인 세부사항을 기재한 볼륨을 추가하는 대신 클러스터 관리자가 기반 스토리지를 설정하고 쿠버네티스 API 서버로 퍼시스턴트볼륨 리소스 생성해 쿠버네티스에 등록한다.

- 퍼시스턴트볼륨이 생성되면 관리자는 크기와 지원 가능한 접근모드를 지정한다. 

 

 

IT 용어에서 "볼륨(Volume)"과 "클레임(Claim)"은 주로 쿠버네티스(Kubernetes)와 같은 컨테이너 오케스트레이션 플랫폼에서 스토리지 관리와 관련해 사용합니다.

✔️ 볼륨(Volume): 컨테이너가 사용하는 스토리지 공간을 의미합니다. 컨테이너는 기본적으로 휘발성 스토리지를 사용하므로, 컨테이너를 재시작하거나 삭제하면 데이터도 사라집니다. 이러한 문제를 해결하기 위해 볼륨을 사용합니다. 볼륨은 컨테이너와 독립적으로 데이터가 저장되는 공간이므로, 컨테이너가 재시작되거나 삭제되어도 데이터가 유지됩니다.

  • 사용 시점: 데이터를 영구적으로 저장하거나 여러 컨테이너에서 데이터를 공유해야 할 때 사용합니다.

✔️ 클레임(Claim): 볼륨에 대한 요청을 의미하며, 보통 **퍼시스턴트 볼륨 클레임(Persistent Volume Claim, PVC)**이라고 부릅니다. 클레임은 사용자(컨테이너)가 특정 크기와 접근 모드를 가진 스토리지를 요청할 때 사용됩니다. 쿠버네티스에서 클레임은 볼륨과 컨테이너 사이의 추상화 계층 역할을 합니다.

  • 사용 시점: 애플리케이션이 실제로 스토리지를 필요로 할 때 사용하며, 이를 통해 필요한 스토리지의 크기, 유형 등을 지정하여 쿠버네티스가 적절한 볼륨을 할당하도록 요청합니다.

요약하면, 볼륨은 데이터가 저장되는 실제 공간을 의미하고, 클레임은 그 볼륨을 사용하기 위해 요청하는 프로세스입니다.

 

 

1) 퍼시스턴트볼륨 생성 

 

kubernetes-in-action/Chapter06/mongodb-pod-gcepd.yaml at master · luksa/kubernetes-in-action · GitHub

 

kubernetes-in-action/Chapter06/mongodb-pod-gcepd.yaml at master · luksa/kubernetes-in-action

Code from the Kubernetes in Action book. Contribute to luksa/kubernetes-in-action development by creating an account on GitHub.

github.com

apiVersion: v1
kind: Pod
metadata:
  name: mongodb 
spec:
  volumes:
  - name: mongodb-data
    gcePersistentDisk:
      pdName: mongodb
      fsType: ext4
  containers:
  - image: mongo
    name: mongodb
    volumeMounts:
    - name: mongodb-data
      mountPath: /data/db
    ports:
    - containerPort: 27017
      protocol: TCP

kubectl create -f mongodb-pv-gcepd.yaml

 

 

 

 

 

2) 퍼시스턴트볼륨클레임 생성하기 

kubernetes-in-action/Chapter06/mongodb-pod-pvc.yaml at master · luksa/kubernetes-in-action · GitHub

 

kubernetes-in-action/Chapter06/mongodb-pod-pvc.yaml at master · luksa/kubernetes-in-action

Code from the Kubernetes in Action book. Contribute to luksa/kubernetes-in-action development by creating an account on GitHub.

github.com

 

 

 

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mongodb-pvc 
spec:
  resources:
    requests:
      storage: 1Gi
  accessModes:
  - ReadWriteOnce
  storageClassName: ""

 

kubectl create -f mongodb-pvc.yaml

 

 

 

3) 파드에서 퍼시스턴트볼륨클레임 참조하기 

apiVersion: v1
kind: Pod
metadata:
  name: mongodb 
spec:
  containers:
  - image: mongo
    name: mongodb
    volumeMounts:
    - name: mongodb-data
      mountPath: /data/db
    ports:
    - containerPort: 27017
      protocol: TCP
  volumes:
  - name: mongodb-data
    persistentVolumeClaim:
      claimName: mongodb-pvc

 

- 애플리케이션 개발장게 인프라스트럭처에서 스토리지 가져올때 간접적인 방법 사용하도록 함. 

 

 

6.6 퍼시스턴트볼륨의 동적 프로비저닝 

- 쿠버네티스는 대부분 인기 있는 클라우드 공급자의 프로비저너를 포함해서 프로비저너 배포하지 않아도 괜찮지만, 

온프레미스에 배포된 쿠버네티스는 사용자 정의 프로비저너가 배포되어야 한다. 

 

 

참고)

https://www.youtube.com/watch?v=0swOh5C3OVM

 

 

반응형