1. 주요 목적

 Kubernetes에서 **PersistentVolume(PV)**와 **PersistentVolumeClaim(PVC)**을 사용하여 데이터를 지속적으로 저장하고 관리하며, 이를 Nginx 서버와 연동하기 위한 Pod를 설정

 

2. 활용 목적

 2.1. 데이터 영구 저장 : PV를 정의하여 클러스터 노드의 경로(/web)에 최대 10Gi의 데이터를 저장 가능 

 2.2. 스토리지 요청 및 할당 : PVC를 통해 3Gi의 스토리지를 요청하여 PV와 연결.

 2.3. Nginx 웹 서버와 데이터 연동 : Pod를 생성하고, Nginx 서버에서 /usr/share/nginx/html 디렉토리를 PV에 마운트하여 영구 데이터 저장

 2.4. 유연한 스토리지 관리 : PV와 PVC를 사용하여 데이터 영속성을 보장하면서 Kubernetes 환경에서 유연한 스토리지 리소스 활용

 

3. 세부 방법

 3.1. 디렉토리 생성 : mkdir /web 
 3.2. html 파일 생성 : vi /web/index.html

<html>
        <body>
                <h1>Persistant_volume_test</h1>
        </body>
</html>

 

 3.3. pv.yml 파일 생성 : vi pv.yml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-volume
  labels: 
    vol: pv
spec:
  storageClassName: web
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: /web

 

 3.4. pv.yml 파일 실행 : kubectl apply -f pv.yml
 3.5. pvc.yml 파일 생성 : vi pvc.yml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pv-claim
spec:
  storageClassName: web
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 3Gi

 

 3.6. pvc.yml 파일 실행 : kubectl apply -f pvc.yml
 3.7. pvcpod.yml 파일 생성 : vi pvcpod.yml

apiVersion: v1
kind: Pod
metadata:
  name: pvc-pod
  labels:
    pvc: nginx
spec:
  nodeName: master
  volumes:
  - name: behwang-pv
    persistenVolumeClaim:
      claimName: pv-claim
  containers:
  - name: n1
    image: nginx
    imagePullPolicy: Never
    ports:
    - containerPort: 80
    volumeMounts:
    - mountPath: /usr/share/nginx/html
      name: behwang-pv
  volumes:
    - name: behwang-pv
      persistentVolumeClaim:
        claimName: pv-claim

 

 3.8. pvcpod.yml 파일 실행 : kubectl apply -f pvcpod.yml
 3.9. 정상 작동 확인 

+ Recent posts

# 드래그 금지