OpenShift는 컨테이너 기반 플랫폼이므로, 기본적으로 컨테이너 내부에서 생성된 데이터는 휘발성(Volatile)이야.
따라서, 데이터가 유지되어야 하는 경우에는 Persistent Storage(영구 스토리지)를 사용해야 해.
OpenShift의 스토리지는 크게 Ephemeral(임시) 스토리지와 Persistent(영구) 스토리지로 나눌 수 있어.
| 스토리지 유형 | 설명 |
|---|---|
| Ephemeral Storage (임시 스토리지) | Pod가 삭제되면 데이터도 함께 사라짐 (예: EmptyDir, Container Local Storage) |
| Persistent Storage (영구 스토리지) | Pod가 삭제되어도 데이터가 유지됨 (예: Persistent Volume, PVC, RWX, RWO) |
📌 어떤 경우에 Persistent Storage를 사용해야 할까?
OpenShift에서 영구 스토리지를 사용하려면 Persistent Volume (PV)와 Persistent Volume Claim (PVC) 개념을 이해해야 해.
📌 PV 목록 확인
oc get pv
PV와 PVC가 매칭되면 Pod에서 스토리지를 사용할 수 있음 📌 PVC 목록 확인
oc get pvc
📌 StorageClass 목록 확인
oc get storageclass
📌 StorageClass를 사용하여 PVC 생성
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-storage
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
storageClassName: standard
📌 PVC가 정상적으로 바인딩되었는지 확인
oc get pvc
Persistent Volume(PV)을 사용할 때, 스토리지가 어떤 방식으로 접근할 수 있는지를 설정해야 해.
| 접근 방식 | 설명 |
|---|---|
| ReadWriteOnce (RWO) | 하나의 Pod에서만 읽기/쓰기가 가능 |
| ReadOnlyMany (ROX) | 여러 Pod에서 읽기만 가능 |
| ReadWriteMany (RWX) | 여러 Pod에서 동시에 읽기/쓰기 가능 |
📌 PVC 생성 시 Access Mode 확인
oc get pvc my-storage -o yaml
OpenShift는 다양한 스토리지 백엔드를 지원해.
| 스토리지 유형 | 설명 |
|---|---|
| NFS (Network File System) | 여러 Pod에서 공유 가능 (RWX 지원) |
| CephFS | 분산 파일 시스템, 고가용성 지원 |
| GlusterFS | 스케일아웃 파일 시스템, RWX 지원 |
| AWS EBS (Elastic Block Store) | AWS 전용, RWO 지원 |
| GCP Persistent Disk | Google Cloud 전용, RWO 지원 |
| Azure Disk / Azure File | Microsoft Azure 전용 스토리지 |
📌 스토리지 백엔드 확인
oc get storageclass
PVC를 Pod에 마운트하여 사용하는 방법을 예제로 보여줄게.
📌 PVC를 사용하는 Pod 예제
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: my-container
image: nginx
volumeMounts:
- mountPath: "/data"
name: my-storage
volumes:
- name: my-storage
persistentVolumeClaim:
claimName: my-storage
👉 위 설정에서는 my-storage라는 PVC를 Pod의 /data 디렉토리에 마운트했어.
👉 이렇게 하면 Pod가 재시작되거나 이동해도 데이터가 유지됨.
RWO, ROX, RWX를 통해 스토리지 접근 방식 설정 이제 OpenShift 스토리지가 어떻게 동작하는지 알겠지? 😊
더 궁금한 점 있으면 질문해줘! 🚀