DevOps와 Infra/Kubernetes On Premise
pv , pvc 생성 및 볼륨마운트
Tech정또해방
2024. 3. 15. 15:28
이번 글에서는 가상화 머신에 마운트한 디스크 이미지에 쿠버네티스를 이용하여 퍼시스턴트 볼륨과 퍼시스턴트 볼륨 클래임 설정을하고 컨테이너에 연결해 컨테이너 내에서 생긴 데이터를 보존하는 설정을 진행해보겠습니다.

여러가지가 많이 보이지만 마지막에 /mnt만 확인하면 됩니다.
아래는 pv 폴더에서 미리 작성해둔 파일들을 적용진행하는 내용들입니다.
kubectl apply -f pv.yml

위 명령어를 실행하여 pv 생성하면 persistentvolume/data1 created를 확인 할 수 있습니다.
kubectl get pv

생성 된 pv를 다시한번 확인합니다.
kubectl apply -f pvc.yml

위 명령어를 실행하여 이번에는 pvc를 생성합니다. 마찬가지로 생성 메세지를 확인 할 수 있습니다.
마찬가지로 아래와 같이 확인 할 수 있습니다.

이번에는 생성한 pv와 pvc를 이용하여 연결된 것을 확인하는 deploy를 배포 및 작성합니다.
위와 마찬가지로 진행합니다.


마지막 확인은 생략하였지만, 컨테이너에 들어가서 파일들을 확인해보고 파드 재 실행 및 재설치를 통해서
생겼던 파일들이 잘 저장되는지 확인하면 됩니다.
다음은 작성했던 <pv.yml> <pvc.yml> <ex-deplyment.yml>에 대한 내용입니다.
pv.yml
apiVersion: v1
kind: PersistentVolume
metadata:
name: "data1"
labels:
name: pv-data
spec:
accessModes:
- "ReadWriteOnce"
capacity:
storage: 2Gi
hostPath:
path: /mnt/data
pvc.yml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-master
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 2G
storageClassName: ""
selector:
matchLabels:
name: pv-data
ex-deplyment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-deploy
spec:
replicas: 3
selector:
matchLabels:
app: web
template:
metadata:
labels:
app: web
spec:
volumes:
- name: pv-master-volumes
persistentVolumeClaim:
claimName: pvc-master
containers:
- name: nginx
image: nginx:latest
imagePullPolicy: Never
ports:
- containerPort: 8004
volumeMounts:
- name: pv-master-volumes
mountPath: /mnt/data
#command: ["/bin/sh", "-c", "echo 'Hello, Kubernetes!' > /mnt/data/example.txt"]