Tip ☆ 볼륨 용량을 제한하는 방법


    볼륨 용량을 제한하는 방법은 크게 두 가지가 있습니다. 첫 번째는 PVC로 PV에 요청되는 용량을 제한하는 것이고, 두 번째는 스토리지 리소스에 대한 사용량을 제한하는 것입니다.

    먼저 PVC로 PV에 요청되는 용량을 제한하는 방법을 살펴보겠습니다.

    1. PVC로 PV를 요청할 때 용량을 제한하는 오브젝트 스펙을 가져와 적용합니다.

    [root@m-k8s ~]# kubectl apply -f ~/_Book_k8sInfra/ch3/3.4.3/limits-pvc.yaml
    limitrange/storagelimits created

    다음 코드를 적용하면 PVC를 통해 PV를 요청할 때 최소 1Mi에서 최대 5Mi로 용량을 제한합니다.

    limits-pvc.yaml

    1. apiVersion: v1
    2. kind: LimitRange
    3. metadata:
    4.  name: storagelimits
    5. spec:
    6.  limits:
    7.  - type: PersistentVolumeClaim
    8.  max:
    9.    storage: 5Mi
    10.  min:
    11.    storage: 1Mi

    2. PV와 PVC를 새로 생성하고 PVC가 최대 용량 제한(5Mi)에 걸려 수행되지 못하는지 확인합니다.

    [root@m-k8s ~]# kubectl apply -f ~/_Book_k8sInfra/ch3/3.4.3/nfs-pv.yaml
    persistentvolume/nfs-pv created
    [root@m-k8s ~]# kubectl apply -f ~/_Book_k8sInfra/ch3/3.4.3/nfs-pvc.yaml
    Error from server (Forbidden): error when creating "/root/_Book_k8sInfra/ch3/3.4.3/nfs-pvc.yaml": persistentvolumeclaims "nfs-pvc" is forbidden: maximum storage usage per PersistentVolumeClaim is 5Mi, but request is 10Mi

    3. 용량 제한 설정을 삭제합니다.

    [root@m-k8s ~]# kubectl delete limitranges storagelimits
    limitrange "storagelimits" deleted

    두 번째 방법인 스토리지 리소스에 대한 총 용량을 제한하는 방법도 살펴보겠습니다.

    1. 총 누적 사용량을 제한하기 위해 다음 오브젝트 스펙을 적용합니다.

    [root@m-k8s ~]# kubectl apply -f ~/_Book_k8sInfra/ch3/3.4.3/quota-pvc.yaml
    resourcequota/storagequota created

    해당 코드는 PVC는 5개, 용량은 25Mi가 넘지 않도록 제한합니다.

    quota-pvc.yaml

    1. apiVersion: v1
    2. kind: ResourceQuota
    3. metadata:
    4.  name: storagequota
    5. spec:
    6.  hard:
    7.    persistentvolumeclaims: "5"
    8.    requests.storage: "25Mi"

    2. 지금까지 배운 내용을 활용해 PV 3개((100Mi)의 상태를 만들고 오브젝트 스펙을 작성합니다(스스로 작성해 보세요). 그런 다음 PVC 3개(10Mi)를 요청해 25Mi 제한으로 더 이상 PVC가 수행되지 못하는지 확인합니다.

    [root@m-k8s ~]# kubectl get pv
    NAME      CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS       …    AGE
    nfs-pv    100Mi      RWX            Retain           Available    …    2s
    nfs-pv1   100Mi      RWX            Retain           Available    …    2m4s
    nfs-pv2   100Mi      RWX            Retain           Available    …    2m1s
    [root@m-k8s ~]# kubectl apply -f nfs-pvc.yaml
    persistentvolumeclaim/nfs-pvc created
    [root@m-k8s ~]# kubectl apply -f nfs-pvc1.yaml
    persistentvolumeclaim/nfs-pvc1 created
    [root@m-k8s ~]# kubectl apply -f nfs-pvc2.yaml
    Error from server (Forbidden): error when creating "nfs-pvc2.yaml": persistentvolumeclaims "nfs-pvc2" is forbidden: exceeded quota: storagequota, requested: requests.storage=10Mi, used: requests.storage=20Mi, limited: requests.storage=25Mi

    3. PVC를 생성하기 위해 설정한 리소스 제한을 삭제합니다.

    [root@m-k8s ~]# kubectl delete resourcequotas storagequota
    resourcequota "storagequota" deleted

    4. 과도하게 생성한 PV(nfs-pv1, nfs-pv2)와 PVC(nfs-pvc1)를 삭제합니다. 이때 Bound(PV와 PVC가 연결된 대상)의 상대를 잘 보고 삭제해야 합니다. Bound는 기본적으로 생성된 시간에 맞춰 연결됩니다.

    [root@m-k8s ~]# kubectl delete pvc nfs-pvc1
    persistentvolumeclaim "nfs-pvc1" deleted
    [root@m-k8s ~]# kubectl delete pv nfs-pv2
    persistentvolume "nfs-pv2" deleted
    [root@m-k8s ~]# kubectl delete pv nfs-pv1
    persistentvolume "nfs-pv1" deleted
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.