Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Image Removed
Info

Image RemovedImage Removed

Info
iconfalse
title목차

Table of Contents

Volumes 개요

Info
iconfalse
 
Info
titlehttps://kimjingo.tistory.com/153
iconfalse
  • 컨테이너가 스토리지에 액세스 하고 공유하는 방법
  • 각 컨테이너 파일 시스템의 볼륨을 마운트하여 생성

Volume 종류

Image Removed

  • PV: PersistentVolume
  • PVC: PersistentVolumeClaim

    Info
    titlehttps://subicura.com/k8s/guide/local-volume.html
    Volume 종류Volume TypeOverView설명

    임시볼륨

    empty-dir

    Image Modified

    파드가 시작될 때 빈 상태로 시작

    루트디스크 또는 램에서 제공된다

    컨테이너끼리 파일을 공유

    Pod가 삭제되면 사라짐

    로컬볼륨

    hostpath

    Image Modified

    host node에서 제공된다

    Pod가 재배포되었을때 node가 달라질 수 있다

    node와 파일을 공유하기 위해 사용

    네트워크 볼륨

    iSCSI

    NFS

    glusterFS

    ...

    Image Added

    네트워크 스토리지를 사용한다.

    클라우드 네트워크 볼륨

    azureFile

    awsEBS

    gcePersistentDisk

    ...

    Info
    iconfalse
    titlehttps://kimjingo.tistory.com/153

    Image Added


    클라우드스토리지를 사용한다.


    Persistent Volume(PV) / Persistent Volume Claim(PVC)

    Info
    iconfalse
    titlehttp://www.boanproject.com
    타입설명

    Static 프로비저닝

    Dynamic 프로비저닝



    Image Added

    Storage Class

    Code Block
    linenumberstrue
    sansae@sansaeAir15m2 k8s-lab-workspace % k get sc
    NAME                    PROVISIONER          RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
    azurefile               file.csi.azure.com   Delete          Immediate              true                   2d6h
    azurefile-csi           file.csi.azure.com   Delete          Immediate              true                   2d6h
    azurefile-csi-premium   file.csi.azure.com   Delete          Immediate              true                   2d6h
    azurefile-premium       file.csi.azure.com   Delete          Immediate              true                   2d6h
    default (default)       disk.csi.azure.com   Delete          WaitForFirstConsumer   true                   2d6h
    managed                 disk.csi.azure.com   Delete          WaitForFirstConsumer   true                   2d6h
    managed-csi             disk.csi.azure.com   Delete          WaitForFirstConsumer   true                   2d6h
    managed-csi-premium     disk.csi.azure.com   Delete          WaitForFirstConsumer   true                   2d6h
    managed-premium         disk.csi.azure.com   Delete          WaitForFirstConsumer   true                   2d6h
    
    
    sansae@sansaeAir15m2 k8s-lab-workspace % k edit sc azurefile
    allowVolumeExpansion: true
    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      creationTimestamp: "2024-03-08T01:58:10Z"
      labels:
        addonmanager.kubernetes.io/mode: EnsureExists
        kubernetes.io/cluster-service: "true"
      name: azurefile
      resourceVersion: "352"
      uid: eb098551-1947-41af-9430-3ae37b28c7b8
    mountOptions:
    - mfsymlinks
    - actimeo=30
    - nosharesock
    parameters:
      skuName: Standard_LRS
    provisioner: file.csi.azure.com
    reclaimPolicy: Delete
    volumeBindingMode: Immediate



    Persistent Volume Claim(PVC) Manifest (Dynamic)

    Info
    iconfalse

    https://dev-k8sref-io.web.app/docs/config-and-storage/persistentvolumeclaim-v1/

    Info
    iconfalse


    Info
    titleaccessModes
    • ReadWriteOnce
      • 하나의 노드에서 해당 볼륨이 읽기-쓰기로 마운트 될 수 있다. ReadWriteOnce 접근 모드에서도 파드가 동일 노드에서 구동되는 경우에는 복수의 파드에서 볼륨에 접근할 수 있다.
    • ReadOnlyMany
      • 볼륨이 다수의 노드에서 읽기 전용으로 마운트 될 수 있다.
    • ReadWriteMany
      • 볼륨이 다수의 노드에서 읽기-쓰기로 마운트 될 수 있다.
    • ReadWriteOncePod
      • 볼륨이 단일 파드에서 읽기-쓰기로 마운트될 수 있다. 전체 클러스터에서 단 하나의 파드만 해당 PVC를 읽거나 쓸 수 있어야하는 경우 ReadWriteOncePod 접근 모드를 사용한다. 이 기능은 CSI 볼륨과 쿠버네티스 버전 1.22+ 에서만 지원된다.


    Code Block
    titlepvc.yaml
    linenumberstrue
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: foo-pvc
    spec:
      storageClassName: azurefile # 빈 문자열은 명시적으로 설정해야 하며 그렇지 않으면 기본 스토리지클래스가 설정됨
      accessModes: [ "ReadWriteOnce" ]
      resources:
        requests:
          storage: 1Gi

    Persistent Volume Claim 실습

    Local
    Info
    iconfalse
    Code Block
    linenumberstrue
    sansae@sansaeAir15m2 k8s-lab-workspace % k get pv
    No resources found
    sansae@sansaeAir15m2 k8s-lab-workspace % k get pvc
    No resources found in default namespace.
    
    sansae@sansaeAir15m2 k8s-lab-workspace % k apply -f pvc.yaml 
    persistentvolumeclaim/foo-pvc created
    sansae@sansaeAir15m2 k8s-lab-workspace % k get pvc
    NAME      STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
    foo-pvc   Bound    pvc-735e1382-f1e1-40f3-8378-25e72ebda4b0   1Gi        RWO            azurefile      3s
    sansae@sansaeAir15m2 k8s-lab-workspace % k get pv
    NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM             STORAGECLASS   REASON   AGE
    pvc-735e1382-f1e1-40f3-8378-25e72ebda4b0   1Gi        RWO            Delete           Bound    default/foo-pvc   azurefile               5s
    sansae@sansaeAir15m2 k8s-lab-workspace % 
    
    

    프로비저너

    각 스토리지클래스에는 PV 프로비저닝에 사용되는 볼륨 플러그인을 결정하는 프로비저너가 있다. 이 필드는 반드시 지정해야 한다.

    볼륨 플러그인내부 프로비저너설정 예시
    AWSElasticBlockStoreAWS EBS
    AzureFileAzure 파일
    AzureDiskAzure 디스크
    CephFS--
    CinderOpenStack Cinder
    FC--
    FlexVolume--
    GCEPersistentDiskGCE PD
    iSCSI--
    NFS-NFS
    RBDCeph RBD
    VsphereVolumevSphere
    PortworxVolumePortworx 볼륨
    Local-