PV(Persistent Volume)
- K8s cluster 외부 storage와 연결을 담당하는 리소스
- https://kubernetes.io/docs/concepts/storage/persistent-volumes/ 참고
PVC(Persistent Volume Claim)
- PV와 pod를 연결하기 위한 리소스
- https://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims 참고
<이미지 출처 : https://www.youtube.com/watch?v=4sNcSZYsrSo&list=PLApuRlvrZKohLYdvfX-UEFYTE7kfnnY36&index=6>
❗ 역할을 나눈다면, 스토리지 지식이 있는 쿠버네티스 클러스터 관리자 또는 스토리지 관리자는 PV 리소스를 생성해 스토리지와 연결해 두고, 파드 개발자는 PVC를 생성해 자신의 파드 및 관리자가 제공해 준 PV와 연결해 파드에서 볼륨을 사용할 수 있게 해줍니다.
PV(PersistentVolume) 생성
<이미지 출처 : https://www.youtube.com/watch?v=4sNcSZYsrSo&list=PLApuRlvrZKohLYdvfX-UEFYTE7kfnnY36&index=6>
- pv생성 및 확인
- 사전에 nfs server 구성 필요 (https://bg-migazure.atlassian.net/wiki/spaces/~624e66494fe01d006bab15c1/pages/359071848/5.+Kubernetes+Storage?atlOrigin=eyJpIjoiZDgzOTE5ZDgyMWU2NDNlMzk1NzRmYzY2ZDFhNjM4YTgiLCJwIjoiYyJ9 참고)
- pv의 storageClassName과 일치해야함
vi pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv1
spec:
capacity:
storage: 20Gi
volumeMode: Filesystem
accessModes:
- ReadWriteMany
storageClassName: manual #pv와 일치
persistentVolumeReclaimPolicy: Delete
nfs:
server: 10.100.0.4
path: /sharedir/k8s #hello world라는 index.html 존재
kubectl apply -f pv.yaml
kubectl get persistentvolume -o wide
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE VOLUMEMODE
pv1 20Gi RWX Delete Available manual 9s Filesystem
PVC(PersistentVolumeClaim) 생성
<이미지 출처 : https://www.youtube.com/watch?v=4sNcSZYsrSo&list=PLApuRlvrZKohLYdvfX-UEFYTE7kfnnY36&index=6 >
- pvc 생성 및 확인
vi pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-web
spec:
accessModes:
- ReadWriteMany
volumeMode: Filesystem
resources:
requests:
storage: 20Gi
storageClassName: "manual"
kubectl apply -f pvc.yaml
kubectl get persistentvolumeclaims -o wide
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE VOLUMEMODE
pvc-web Bound pv1 20Gi RWX manual 36s Filesystem
kubectl get persistentvolume -o wide
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE VOLUMEMODE
pv1 20Gi RWX Delete Bound default/pvc-web manual 36m Filesystem
Pod에서 PersistentVolumeClaim을 사용
<이미지 출처 : https://www.youtube.com/watch?v=4sNcSZYsrSo&list=PLApuRlvrZKohLYdvfX-UEFYTE7kfnnY36&index=6>
- Pod 생성 및 확인
vi pvc-pod-web.yaml
apiVersion: v1
kind: Pod
metadata:
name: web
spec:
containers:
- image: nginx:1.14
name: nginx
volumeMounts:
- name: html
mountPath: /usr/share/nginx/html
volumes:
- name: html
persistentVolumeClaim:
claimName: pvc-web
kubectl apply -f pvc-pod-web.yaml
kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
web 1/1 Running 0 17s 10.36.0.1 node1.example.com <none> <none>
curl 10.36.0.1
hello world
참고 : https://www.youtube.com/watch?v=4sNcSZYsrSo&list=PLApuRlvrZKohLYdvfX-UEFYTE7kfnnY36&index=6
'INFRA > DevOps' 카테고리의 다른 글
[k8s] kube-proxy (0) | 2023.04.10 |
---|---|
[K8s] Network (0) | 2023.04.10 |
[K8s] Storage NFS (0) | 2023.03.27 |
[k8s] Storage emptyDir 및 share volume (0) | 2023.03.20 |
[K8s] Storage 개념 및 hostPath (0) | 2023.03.14 |
댓글