지니데비 기록 자세히보기

데브옵스/Orchestration

[Kubernetes] 56. Volumes, Persistent Volumes, Persistent Volume Claims

지니데비 2025. 1. 8. 14:22
728x90


Volumes 설정

# EBS PersistentVolume 정의
apiVersion: v1
kind: PersistentVolume
metadata:
  name: aws-ebs-pv
spec:
  capacity:
    storage: 5Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: aws-ebs
  awsElasticBlockStore:
    volumeID: vol-0a12345b678cde901  # 여기에 실제 EBS 볼륨 ID 입력
    fsType: ext4
---
# PersistentVolumeClaim 정의
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: aws-ebs-pvc
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: aws-ebs
  resources:
    requests:
      storage: 5Gi
---
# PVC를 사용하는 Pod 정의
apiVersion: v1
kind: Pod
metadata:
  name: aws-ebs-pod
spec:
  containers:
  - name: aws-ebs-container
    image: nginx
    volumeMounts:
    - mountPath: "/usr/share/nginx/html"
      name: aws-storage
  volumes:
  - name: aws-storage
    persistentVolumeClaim:
      claimName: aws-ebs-pvc

 


 

Persistent Volume

PersistentVolume 설정

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-data
spec:
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteOnce
  hostPath: # CSP 사용하는 경우 각 업체마다 parameter 명칭이 다름
    path: "/data/pv-data" # 특정 노드의 파일 시스템을 컨테이너에 공유하여 컨테이너가 해당 경로에 직접 접근하고 사용할 수 있도록 설정하는 방식

※ accessModes: ReadOnlyMany/ReadWriteOnce/ReadWriteMany

 

PersistentVolumeClaim 생성

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-data
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 500Mi

※ claim에 명시된 저장소 용량이 확보되지 않으면 Pending 상태로 유지되다가 확보 시 용량이 할당된다.

※ PersistentVolumeClaim을 삭제해도 "persistentVolumeReclaimPolicy: Retain" 설정을 통해 설정된 볼륨을 삭제하기 전까지는 유지된다. (사용은 불가능하다.) " persistentVolumeReclaimPolicy: Delete" 설정하면 PersistentVolumeClaim 삭제 시 자동으로 볼륨이 삭제된다.

 

Pod에 볼륨 마운트

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
    - name: my-container
      image: nginx
      volumeMounts:
        - mountPath: "/usr/share/nginx/html"
          name: storage
  volumes:
    - name: storage
      persistentVolumeClaim:
        claimName: pvc-data

 

 

 

webapp Pod의 log 확인

kubectl exec webapp -- cat /log/app.log

 

 

 

 

728x90
반응형