티스토리 뷰
PV (PersistentVolume)
- 관리자가 프로비저닝 했거나 스토리지 클래스를 사용해 동적으로 프로비저닝한 클러스터의 스토리지
- 볼륨과 같은 볼륨 플러그인이지만 PV를 사용하는 개별 Pod와 독립적인 수명 주기를 가짐
PVC (PersistentVolumeClaim)
- 사용자가 볼륨을 사용하기 위해 PV에 하는 스토리지 요청
- Pod는 노드 리소스를 소모하고 PVC는 PV 리소스를 소모한다.
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
'infra > kubernetes' 카테고리의 다른 글
[쿠버네티스] 스토리지 (0) | 2024.06.04 |
---|---|
[쿠버네티스] Service란? (2) | 2024.04.12 |
[쿠버네티스] 리소스 정책 / Request, Limit, ResourceQuota, LimitRange (0) | 2024.02.09 |
[쿠버네티스] 워크 로드(2) / ReplicaSet, Deployment, DaemonSet, Static Pod (2) | 2024.02.08 |
[쿠버네티스] Label & Selector (0) | 2024.02.07 |
- Total
- Today
- Yesterday