ㅁ 기본 스토리지 기술에서 포드 분리
[PersistentVolume] 과 [PersistentVolumeClaim]
[PersistentVolume 생성]
mongodb-pv-gcepd.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: mongodb-pv
spec:
capacity: #PersistentVolume 크기 정의
storage: 1Gi
accessModes: #단일 클라이언트가 읽기 및 쓰기 용으로 마운트하거나 여러 클라이언트가 읽기 전용으로 마운트할 수 있다.
- ReadWriteOnce
- ReadOnlyMany
persistentVolumeReclaimPolicy: Retail # 클레임이 해제된 후에는 PersistentVolume을 삭제하거나 삭제된 상태로 유지해야 함
gcePErsistentDisk:
pdName: mongodb
fsType: ext4
PersistentVolume을 생성할 때 관리자는 쿠버네티스에
- 용량이 얼마나 되는지,
- 단일 노드 또는 여러 노드에서 동시에 읽거나 쓸수 있는지 여부
- PersistentVolume이 릴리스되면 어떻게 할지 알려줘야 함
- 이 PersistentVolume이 지원되는 실제 스토리지의 유형, 위치, 그 밖의 속성을 지정해야 함
를 알려야 함.
ㅁ PersistentVolumeClaim을 생성해 PersistentVolume 할당
[PersistentVolumeClaim 생성]
PersistentVolumeClaim: mongodb-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mongodb-pvc. # 클레임의 이름-나중에 클레임을 Pod의 볼륨으로 사용할 때 필요
spec:
resources:
requests:
storage: 1Gi # 스토리지의 1Gib 요청
accessModes: # 스토리지가 단일 클라이언트를 지원하도록 하려는 경우(읽기 및 쓰기 모두 수행)
- ReadWriteOnce
storageClassName: ""
[PersistentVolumeClaim 나열하기]
PVC(PersistentVolumeClaim) 상태를 확인하려면
$ kubectl get pvc
AccessModes에 사용되는 약어
- RWO-ReadWriteOnce: 단일노드만 읽기/쓰기를 위해 볼륨을 마운트 할 수 있다.
- ROX-ReadOnlyMany: 여러 노드가 읽기 위해 볼륨을 마운트 할 수 있다.
- RWX-ReadWriteMany: 여러 노드가 읽기 및 쓰기를 위해 볼륨을 마운트 할 수 있다.
[PersistenVolume 나열하기]
$ kubectl get pv
ㅁ Pod에서 PersistentVolumeClaim 사용
[PersistentVolumeClaim 볼륨을 사용하는 Pod: mongodb-pod-pvc.yaml]
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
[PersistentVolume과 PersistentVolumeClaim] 사용의 장점
[PV, PVC 수명 주기]
ㅁ PersistentVolume의 동적 프로비저닝
쿠버네티스 클러스터 관리자는 PersistentVolume 공급자를 배포하고 사용자가 원하는 PersistentVolume 유형을 선택할 수 있도록 하나 이상의 StorageClassObject를 정의 할 수 있다.
[StorageClass 리소스를 통해 사용 가능한 스토리지 유형 정의]
storageclass-fast-gcepd.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: fast
provisioner: kubernetes.io/gce-pd # PersistentVolume 프로비저닝에 사용할 볼륨 플러그인
parameters: # 제공자에게 전달된 매개 변수
type: pd-ssd
zone: europe-west1-b
StorageClass 리소스는 PersistentVolumeClaim이 이 StorageClass를 요청할 때 PersistentVolume을 프로비저닝하는데 사용해야 함.
[PersistentVolumeClaim의 스토리지 클래스 요청]
mongodb-pvc-dp.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mongodb-pvc
spec:
storageClassName: fast
resources:
requests:
storage: 100Mi
accessModes:
- ReadWriteOnce
[동적 PersistentVolume 프로비저닝의 전체적인 그림 이해]
'Kubenetes > Volumes' 카테고리의 다른 글
볼륨: 컨테이너에 디스크 스토리지 연결 (0) | 2021.02.06 |
---|