MariaDB, PVC

Jeonghak Cho·2024년 11월 19일

MariaDB

목록 보기
6/11

mariadb instance 생성 시 StatefulSet 내의 volumeClaimTemplates 가 pvc 이므로 그 때 PV와 Bound될 것이다. 여기서는 pv,pvc 바운드 과정을 확인하기 위해 사용자 정의 pvc를 적용해 본다.

mdb-pvc.yml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mypvc
spec:
  storageClassName: local-storage
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 500Mi
vagrant@master:~$ k apply -f mdb-pvc.yml
persistentvolumeclaim/mypvc created
vagrant@master:~$ k get pvc
NAME    STATUS   VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS    AGE
mypvc   Bound    mypv3    500Mi      RWO            local-storage   2s
vagrant@master:~$ k get pv
NAME    CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM           STORAGECLASS    REASON   AGE
mypv1   500Mi      RWO            Delete           Available                   local-storage            8m30s
mypv2   500Mi      RWO            Delete           Available                   local-storage            8m30s
mypv3   500Mi      RWO            Delete           Bound       default/mypvc   local-storage            8m30s

사전의 만들어 두었던 3개의 PV 중 하나의 상태가 Bound 로 변했다.

pvc를 삭제하면 Reclaim Policy 가 Delete 이므로 Bound 된 PV가 함께 삭제될 것이라 예상할 수 있다. 하지만...

vagrant@master:~$ k delete pvc mypvc
persistentvolumeclaim "mypvc" deleted
vagrant@master:~$ k get pv,pvc
NAME                     CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM           STORAGECLASS    REASON   AGE
persistentvolume/mypv1   500Mi      RWO            Delete           Available                   local-storage
 11m
persistentvolume/mypv2   500Mi      RWO            Delete           Available                   local-storage
 11m
persistentvolume/mypv3   500Mi      RWO            Delete           Failed      default/mypvc   local-storage
 11m

로컬 마운트 지점이 /mnt 가 아닐 경우 자동 삭제가 안된다.

vagrant@master:~$ k describe pv mypv3
Name:            mypv3
Labels:          type=local
Annotations:     pv.kubernetes.io/bound-by-controller: yes
Finalizers:      [kubernetes.io/pv-protection]
StorageClass:    local-storage
Status:          Failed
Claim:           default/mypvc
Reclaim Policy:  Delete
Access Modes:    RWO
VolumeMode:      Filesystem
Capacity:        500Mi
Node Affinity:   <none>
Message:         host_path deleter only supports /tmp/.+ but received provided /mnt/data3
Source:
    Type:          HostPath (bare host directory volume)
    Path:          /mnt/data3
    HostPathType:
Events:
  Type     Reason              Age   From                         Message
  ----     ------              ----  ----                         -------
  Warning  VolumeFailedDelete  45s   persistentvolume-controller  host_path deleter only supports /tmp/.+ but received provided /mnt/data3

직접 문제의 pv를 삭제하고 다시 생성한다.

vagrant@master:~$ k delete pv mypv3
persistentvolume "mypv3" deleted
vagrant@master:~$ k apply -f mdb-pv.yml
persistentvolume/mypv1 unchanged
persistentvolume/mypv2 unchanged
persistentvolume/mypv3 created
vagrant@master:~$ k get pv
NAME    CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS    REASON   AGE
mypv1   500Mi      RWO            Delete           Available           local-storage            13m
mypv2   500Mi      RWO            Delete           Available           local-storage            13m
mypv3   500Mi      RWO            Delete           Available           local-storage            8s

0개의 댓글