티스토리 뷰

728x90

PV (PersistentVolume)

- 관리자가 프로비저닝 했거나 스토리지 클래스를 사용해 동적으로 프로비저닝한 클러스터의 스토리지
- 볼륨과 같은 볼륨 플러그인이지만 PV를 사용하는 개별 Pod와 독립적인 수명 주기를 가짐

PVC (PersistentVolumeClaim)

- 사용자가 볼륨을 사용하기 위해 PV에 하는 스토리지 요청
- Pod는 노드 리소스를 소모하고 PVC는 PV 리소스를 소모한다.

 

 

728x90


1. PV의 Lifecycle

1) Provisioning : PV를 생성하는 단계로 동적 프로비저닝과 정적 프로비저닝이 있다.
    - 동적 프로비저닝 : 미리 적정 용량의 PV를 만들어두고 사용자의 요청 시, 미리 만들어 둔 PV를 할당함. 제한된 스토리지 용량일 때 유용
    - 정적 프로비저닝 : 사용자가 PVC를 거쳐 PV를 요청했을 때, 생성해서 제공함
2) Binding : 프로비저닝으로 생성된 PV와 PVC를 연결하는 단계. 1대1 관계이며 PVC에서 원하는 용량과 접근방법을 명시하면 거기에 맞는 PV가 할당됨
3) Using : PVC는 Pod에 설정되고, Pod는 PVC를 볼륨으로 인식해서 사용함. 클러스터는 PVC를 통해 바인딩된 PV를 찾고 볼륨을 Pod에서 사용할 수 있도록 함
4) Reclaiming : 사용이 끝난 PVC는 삭제되고 PV를 초기화 함


2. PV의 생성

# test-pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: test-pv
  labels:
    name: test-pv
spec:
  capacity:
    storage: 1Gi
  accessModes:
  - ReadWriteMany
  hostPath:
    path: "/test/volume"


- capacity: 사용할 용량을 설정한다.
- accessModes: 특정 접근 모드를 선택한다.
  1) ReadWriteOnce: 하나의 노드가 볼륨을 Read/Write 가능하도록 마운트
  2) ReadOnlyMany: 여러 개의 노드가 Read 전용으로 사용하도록 마운트
  3) ReadWriteMany: 여러 개의 노드가 Read/Write 가능하도록 마운트
- hostPath: 노드에 저장되는 디렉토리를 설정한다.

# 적용하기
kubectl apply -f test-pv.yaml
# PV 조회
kubectl get pv


3. PVC 생성

# test-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: test-pvc
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 1Gi


4. PVC를 사용할 Pod 생성

# test-pod.yaml
apiVersion: v1
kind: Pod
metadata:
  name: test-nginx2
spec:
  containers:
  - name: test-nginx2
    image: nginx: 1.19
    ports:
    - containerPort: 80
    volumeMount:
      - mountPath: "/test/volume"
        name: test-pv
  volumes:
  - name: test-pv
    PersistentVolumeClaim:
      claimName: test-pvc

# Value
- volumeMount.mountPath: 볼륨 마운트할 컨테이너 안의 경로를 작성합니다.
- volumes.PersistentVolumeClaim: 컨테이너에서 사용할 PV의 이름을 가져오고, PV와 연결되어있으며 요청을 보낼 PVC를 지정합니다.

 

 

 

이전 글 보러가기

 

2024.01.26 - [infra/kubernetes] - [쿠버네티스] 워크 로드(1) / Pod

 

[쿠버네티스] 워크 로드(1) / Pod

1. Pod 란? - 쿠버네티스 노드 내에 최소 한 개 이상의 컨테이너를 가진 파드가 실행되고 있으며, 파드마다 다른 IP를 가지고 있고 컨테이너끼리 통신이 가능함 - 파드 내 컨테이너끼리 볼륨(저장소

coding.lifeandmoney.kr

2024.02.08 - [infra/kubernetes] - [쿠버네티스] 워크 로드(2) / ReplicaSet, Deployment, DaemonSet, Static Pod

 

[쿠버네티스] 워크 로드(2) / ReplicaSet, Deployment, DaemonSet, Static Pod

1. ReplicaSet - 파드를 생성 및 복제하고, 복제된 파드 수를 yaml 파일에서 생성된 개수만큼 항상 유지 apiVersion: apps/v1 kind: Replicaset metadata: name: nginx-rs labels: app: nginx-rs tier: nginx-rs spec: replicas: 3 selector:

coding.lifeandmoney.kr

 

728x90
300x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크