mingming

Kubernetes - Storage 본문

새싹 하이브리드 클라우드/Kubernetes

Kubernetes - Storage

mingming_96 2023. 11. 23. 13:07

Volume 

  • 파드의 컨테이는 이미지로부터 파일 시스템을 제공받습니다. 그러나 파드가 종료되면 파드 내에 변경된 데이터는 더이상 사용할 수 없게됩니다. 
  • 쿠버네티스의 파드는 새로 생성된 데이터를 보존하기 위해 외부 저장소 볼륨을 생성하고, 이런 볼륨을 컨테이너에 마운트해 사용합니다.  
  • 기본적인 볼륨의 라이프사이클은 파드의 라이프사이클과 같아 파드가 생성되면 볼륨도 같이 생성되고, 파드가 삭제되면 볼륨도 같이 삭제됩니다. 
  • persistentVolume 및 PersistentVolumeClaim 을 사용해 파드의 라이프사이클과 다르게 따로 볼륨만의 사이클을 분리할 수 있습니다. 파드가 제거되고 다시 생성되더라도 기존 볼륨을 사용할 수 있게 됩니다. 

 

Volume Type

1. emptyDir : 임시로 데이터를 저장하는 빈 볼륨

 

2. gitRepo : 내부적으로 emptyDir 기능을 이용하여, 초기에 Git 레포지토리의 내용을 채워서 제공하는 볼륨 

 

3. hostPath : 쿠버네티스 클러스터 노드의 파일 시스템을 제공하는 볼륨 

 

4. 네트워크 스토리지 볼륨 : cephfs, cinder, fs, flexVolume, flocker, nfs 등 

 

5. 클라우드스토리지 볼륨 : awsEBS, azureDisk, azureFile

 

6. 특수 유형 볼륨 : configMap, secret

 

 

emtpyDir Volume

아무 데이터도 없는 빈 디렉터리를 제공해주는 볼륨입니다. 파드가 생성하는 데이터를 저장할 수 있으며 파드 내의 컨테이너 간에 데이터를 공유할 때 유용하게 사용할 수 있습니다.

 

emptyDir template

---
apiVersion: v1
kind: Pod
metadata:
  name: empty-pod
  label
    vol: emptyDir
spec:
  containers:
  - name:
    image:
    volumeMounts:
    - name: <VOL-NAME>
      mountPath: <PATH>
   volumes:
   - name: <VOL-NAME>
     emptyDir: {}

 

pod.spec.volumes. emptyDir

  • emptyDir 타입의 볼륨 정의 
  • {} : 값을 비워두면 호스트의 로컬 디스크를 이용 

pod.spec.containers.volumeMounts : 컨테이너 마운트 할 볼륨 선언 

pod.spec.containers.volumeMounts.mountPath : 컨테이너 내의 마운트 포인트

 

gitRepo Volume

EmptyDir 볼륨에 지정한 Git Repogitory의 파일을 채워서 제공해주는 볼륨입니다.

 

gitRepo template

---
apiVersion: v1
kind: Pod
metadata:
  name: gitRepo-pod
  label
    vol: gitRepo
spec:
  containers:
  - name:
    image:
    volumeMounts:
    - name: <VOL-NAME>
      mountPath: <PATH>
   volumes:
   - name: <VOL-NAME>
     gitRepo:
       repository: <GIT-REPO-URL>
       revision: <BRANCH>
       directory: <PATH>

 

pod.spec.volumes.gitRepo.repository : Git 저장소의 주소 

pod.spec.volumes.gitRepo.revision : Git 저장소의 브랜치

pod.spec.volumes.gitRepo.directory : 저장소의 특정 경로 지정

 

hostPath Volume

파드가 동작하는 쿠버네티스 클러스터의 노드의 로컬 파일 시스템 및 파일 및 디렉터리를 파드가 사용할 수 있는 볼륨으로 제공해줍니다.

 

hostPath template

---
apiVersion: v1
kind: Pod
metadata:
  name: hostPath-pod
  label
    vol: hostPath
spec:
  containers:
  - name:
    image:
    volumeMounts:
    - name: <VOL-NAME>
      mountPath: <PATH>
   volumes:
   - name: <VOL-NAME>
     hostPath:
       type: <TYPE>
       path: <PATH>

 

pod.spec.volumes.hostPath.type : 볼륨의 종류 지정 

  • DirectoryOrCreate : 지정된 경로의 디렉터리 사용 ( 없으면 생성 )
  • Directory: 지정된 경로의 디렉터리 사용 ( 해당 경로가 존재해야 합니다 )
  • FileOrCreate : 지정된 경로의 파일 사용 ( 없으면 생성 )
  • File : 지정된 경로의 UNIX 소켓 사용 ( 존재해야 합니다 )

pod.spec.volumes.hostPath.path : 공유할 볼륨의 호스트 경로 지정

 

 

 

 

'새싹 하이브리드 클라우드 > Kubernetes' 카테고리의 다른 글

Kubernetes - Autoscaling  (2) 2023.11.26
Kubernetes - PV & PVC  (1) 2023.11.23