HomePostAbout
thumbnail
『쿠버네티스 교과서』실습 5장 part 2
K8s
Docker
DevOps
2024.01.25.

해당 포스트는 교재 『쿠버네티스 교과서』를 활용하며,
환경은 Kubernetes v1.28. Docker Desktop으로 진행합니다.

개념 요약

정적 볼륨 프로비저닝

영구볼륨과 클레임을 명시적으로 생성해서 연결하는 정적 볼륨 프로비저닝 방식. 모든 k8s 클러스터에서 사용할 수 있으며, 스토리지 접근 제약이 큰 조직에서 선호한다.

  • 영구볼륨의 Name, 용량, 경로등을 명시할 수 있다.

동적 볼륨 프로비저닝

영구볼륨 클레임만 생성하면 그에 맞는 영구볼륨을 클러스터에서 동적으로 생성해주는 방식. 어떤 방식으로 스토리지가 구성되는지는 클러스터마다 다를 수 있다. 새로운 사용자 정의 스토리지 유형도 추가할 수 있다.

reclaimPolicy

클레임이 삭제되었을때 연결된 볼륨을 어떻게 처리할지 지정하는 것.

실습

매니페스트 파일

postgres-persistentVolumeClaim-dynamic.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: postgres-pvc-dynamic
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 100Mi

postgres-persistentVolumeClaim-storageClass.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: postgres-pvc-kiamol
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: kiamol
  resources:
    requests:
      storage: 100Mi

PS C:\Users\hdyang\Desktop\Project\k8s-practice\ch05> # 예제 5-8에 정의된 영구볼륨클레임을 배치
PS C:\Users\hdyang\Desktop\Project\k8s-practice\ch05> kubectl apply -f todo-list/postgres-persistentVolumeClaim-dynamic.yaml
persistentvolumeclaim/postgres-pvc-dynamic created
PS C:\Users\hdyang\Desktop\Project\k8s-practice\ch05> kubectl get pvc
NAME                   STATUS    VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
postgres-pvc           Bound     pv01                                       50Mi       RWO                           105m
postgres-pvc-dynamic   Bound     pvc-be70912e-fe15-42b5-91e2-9862a041cdbf   100Mi      RWO            hostpath       5s
postgres-pvc-toobig    Pending                                                                                       68m
PS C:\Users\hdyang\Desktop\Project\k8s-practice\ch05> kubectl get pv
NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                          STORAGECLASS   REASON   AGE      
pv01                                       50Mi       RWO            Retain           Bound    default/postgres-pvc                                   111m     
pvc-be70912e-fe15-42b5-91e2-9862a041cdbf   100Mi      RWO            Delete           Bound    default/postgres-pvc-dynamic   hostpath                15s
PS C:\Users\hdyang\Desktop\Project\k8s-practice\ch05> # 사용자 정의 스토리지 유형이 사용된 영구볼륨클레임을 생성
PS C:\Users\hdyang\Desktop\Project\k8s-practice\ch05> kubectl apply -f storageClass/postgres-persistentVolumeClaim-storageClass.yaml
persistentvolumeclaim/postgres-pvc-kiamol created
PS C:\Users\hdyang\Desktop\Project\k8s-practice\ch05>
PS C:\Users\hdyang\Desktop\Project\k8s-practice\ch05> # 위의 클레임을 사용하도록 데이터베이스 파드를 업데이트
PS C:\Users\hdyang\Desktop\Project\k8s-practice\ch05> kubectl apply -f storageClass/todo-db.yaml
deployment.apps/todo-db configured
PS C:\Users\hdyang\Desktop\Project\k8s-practice\ch05> # 스토리지 관련 리소스를 확인
PS C:\Users\hdyang\Desktop\Project\k8s-practice\ch05> kubectl get pvc
NAME                   STATUS    VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
postgres-pvc           Bound     pv01                                       50Mi       RWO                           119m
postgres-pvc-dynamic   Bound     pvc-be70912e-fe15-42b5-91e2-9862a041cdbf   100Mi      RWO            hostpath       13m
postgres-pvc-kiamol    Bound     pvc-00338685-a63a-4616-9901-bb9adbb2fbef   100Mi      RWO            kiamol         8s
postgres-pvc-toobig    Pending                                                                                       81m
PS C:\Users\hdyang\Desktop\Project\k8s-practice\ch05> kubectl get pv
NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                          STORAGECLASS   REASON   AGE
pv01                                       50Mi       RWO            Retain           Bound    default/postgres-pvc                                   125m
pvc-00338685-a63a-4616-9901-bb9adbb2fbef   100Mi      RWO            Delete           Bound    default/postgres-pvc-kiamol    kiamol                  8s
pvc-be70912e-fe15-42b5-91e2-9862a041cdbf   100Mi      RWO            Delete           Bound    default/postgres-pvc-dynamic   hostpath                13m
PS C:\Users\hdyang\Desktop\Project\k8s-practice\ch05>
PS C:\Users\hdyang\Desktop\Project\k8s-practice\ch05> # 파드의 상세 정보를 확인
PS C:\Users\hdyang\Desktop\Project\k8s-practice\ch05> kubectl get pods -l app=todo-db

NAME                       READY   STATUS    RESTARTS   AGE
todo-db-56c5846894-xkbvz   1/1     Running   0          9s

Source

Just an developer with drinks
2022 HyeonDong, Powered By Gatsby.