Storage Class, Persistent Volume, Persistent Volume Claim

장동민·2022년 8월 3일
0

CKA 자격증 준비

목록 보기
12/13

1. Kubernetes Volume 운영환경 분리

  • 기본 스토리지 운영환경을 분리

    • 관리자 : 스토리지 구성
    • 개발자 : 필요한 만큼 요구
  • PersistentVolumes : 관리자에 의해 생성된 볼륨

  • PersistentVolumeClaims : 사용자가 볼륨을 사용하기 위해 PV에 요청


2. Dynamic Provisioning

  • 온-디맨드 방식으로 스토리지 볼륨을 생성

  • 사용자가 스토리지를 요청하면 자동으로 프로비저닝

  • 하나 이상의 StorageClass 오브젝트를 사전 생성

✍ 온-디맨드 방식 : 이용자의 요구에 따라 서비스를 제공해주는 것


3. StorageClass

(참고 URL : https://kubernetes.io/docs/concepts/storage/storage-classes/)

  • 스토리지의 "classes"를 설명

  • StorageClass에는 해당 StorageClass에 속하는 PV를 동적으로 프로비저닝 할 때 사용되는 provisioner, parameters와 reclaimPolicy 필드가 포함

  • reclaimPolicy가 지정되지 않으면 기본값은 delete

  • 스토리지 클래스에 속하는 볼륨을 설명하는 parameters


4. Provisioner

  • 각 StorageClass에는 PV 프로비저닝에 사용되는 볼륨 플러그인을 결정하는 프로비저너가 있음. 이 필드는 반드시 지정해야 함

5. Persistent Volume 만들기

예시) pv.yaml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pvname
spec:
  capacity:
    storage: <storage_size>
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  nfs:
    server: <NFS_Server>
    path: <Share_Storage>

※ 문제1: PersistentVolume 만들기

(참고 URL : https://kubernetes.io/docs/concepts/storage/volumes/#hostpath
https://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistent-volumes)

  • 작업 클러스터 : hk8s
  • pv001라는 이름으로 size 1Gi, access mode ReadWriteMany를 사용하여 persistent volume을 생성합니다.
  • volume type은 hostPath이고 위치는 /tmp/app-config입니다.

  1. 작업 클러스터 확인

  1. pv001.yaml 파일 생성 및 PersistentVolume 정보 작성 후 저장

  1. pv001.yaml 파일 apply

  1. 만든 persistent volume 생성 확인


6. PersistentVolumeClaim 만들기

예시) pvc.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-name
spec:
  resources:
    requests:
      storage: size
  accessModes:
  - ReadWriteOnce
  storageClassName: "manuel"

7. PersistentVolumeClaim을 pod에서 사용하기

예시) pod.yaml

apiVersion: v1
kind: Pod
metadata:
  name: pod
spec:
  containers:
  - image: image
    name: container-name
    volumeMounts:
    - name: volume-name
      mountPath: /mount/dir
  volumes:
  - name: volume-name
    persistentVolumeClaim:
      claimName: pvc-name

※ 문제2: PVC를 사용하는 애플리케이션 Pod 운영

(참고 URL : https://kubernetes.io/docs/concepts/storage/_print/#persistentvolumeclaims
https://kubernetes.io/docs/concepts/storage/_print/#claims-as-volumes)

  • 작업 클러스터 : k8s
  • 다음의 조건에 맞는 새로운 PersistentVolumeClaim 생성하시오
    • Name: pv-volume
    • Class: app-hostpath-sc
    • Capacity: 10Mi
  • 앞서 생성한 pv-volume PersistentVolumeClaim을 mount하는 Pod 를 생성하시오.
    • Name: web-server-pod
    • Image: nginx
    • Mount path: /usr/share/nginx/html
  • Volume에서 ReadWriteMany 액세스 권한을 가지도록 구성합니다.

  1. 작업 클러스터 확인

  1. 조건에 맞는 PersistentVolumeClaim 생성하는 yaml 파일 생성 및 저장

  1. yaml 파일 apply 및 PersistentVolumeClaim 조회

  1. pv-volume PersistentVolumeClaim을 mount하는 Pod를 생성하는 yaml 파일 생성 및 저장

  1. yaml 파일 apply 및 생성한 Pod 조회

  1. describe 명령으로 Pod 조회(해당 경로로 Mount 된 것을 확인, Volume type과 ClaimName 등 확인)

profile
나만의 데이터베이스

0개의 댓글