Versions Compared

Key

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

...

Info
iconfalse
title목차

Table of Contents

Volumes 개요

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

Volume 종류

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

임시볼륨

empty-dir

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

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

컨테이너끼리 파일을 공유

Pod가 삭제되면 사라짐

로컬볼륨

hostpath

local

host node에서 제공된다

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

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

네트워크 볼륨

iSCSI

NFS

glusterFS

...

Image Added

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

클라우드 네트워크 볼륨

azureFile

awsEBS

gcePersistentDisk

...

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

Image Modified

클라우드 네트워크 볼륨


azureFile

awsEBS

gcePersistentDisk

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


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

Info
Image Removedinfo
icon
false

프로비저너

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

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

Infocode
icon
titlestatefulset.yaml
linenumberstrue
collapsetrue
false

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
aapiVersion: apps/v1 kind: StatefulSet metadata: name: web spec: selector: matchLabels: app: nginx serviceName: "nginx" replicas: 3 # 기본값은 1 minReadySeconds: 10 # 기본값은 0 template: metadata: labels: app: nginx spec: terminationGracePeriodSeconds: 10 containers: - name: nginx image: nginx:1.15.12 ports: - containerPort: 80 name: web volumeMounts: - name: www mountPath: /usr/share/nginx/html volumeClaimTemplates: - metadata: name: www spec: accessModes
: [ "ReadWriteOnce" ]
storageClassName: azurefile
  resources:
    requests:
      storage: 1Gi

Persistent Volume Claim 실습

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 statefulsetpvc.yaml 
servicepersistentvolumeclaim/nginx-stps created
statefulset.apps/webfoo-pvc created

sansae@sansaeAir15m2 k8s-lab-workspace % k get pvc
NAME        STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
www-web-0   Bound    pvc-d7a6b825-edeb-4f06-813f-eef6abe19398   1Gi        RWO            azurefile      52s
www-web-1   foo-pvc   Bound    pvc-a2ebaeef735e1382-ae82f1e1-47bc40f3-89888378-6bb6ca0a906725e72ebda4b0   1Gi        RWO            azurefile      32s
www-web-2   Bound    pvc-e17e5080-4403-4131-9d2b-f143431681df   1Gi        RWO            azurefile      12s

3s
sansae@sansaeAir15m2 k8s-lab-workspace % k get pv
NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM               STORAGECLASS   REASON   AGE
pvc-a2ebaeef735e1382-ae82f1e1-47bc40f3-89888378-6bb6ca0a906725e72ebda4b0   1Gi        RWO            Delete           Bound    default/wwwfoo-web-1pvc   azurefile               55s
pvc-d7a6b825-edeb-4f06-813f-eef6abe19398   1Gi        RWO            Delete           Bound    default/www-web-0   azurefile               74s
pvc-e17e5080-4403-4131-9d2b-f143431681df   1Gi        RWO            Delete           Bound    default/www-web-2   azurefile               34s5s
sansae@sansaeAir15m2 k8s-lab-workspace %