Kubernetes Emptydir
EmptyDir 볼륨은 Pod와 함께 생성되고 삭제됨, lifecycle을 같이 가져가는 존재
Pod내의 모든 컨테이너는 emptyDir 볼륨에 접근 가능
디스크, SSD, 네트워크 스토리지등에 저장이 가능하고, emptyDir.medium 필드를 Memory로 설정시 tmpfs RAM에 마운트 가능
대신 메모리 제한에 유의
apiVersion: v1
kind: Pod
metadata:
name: test-pd
spec:
containers:
- image: registry.k8s.io/test-webserver
name: test-container
volumeMounts:
- mountPath: /cache
name: cache-volume
volumes:
- name: cache-volume
emptyDir: {}
https://kubernetes.io/docs/concepts/storage/volumes/#emptydir-configuration-example
emptyDir 명세 예시
EmptyDir을 사용하면 Pod와 같은 lifecycle을 갖고 동작
Pod내 container들간 데이터 공유를 위해 사용되기 때문에 다른 Pod의 container에서는 접근이 불가
공유되는 스토리지를 사용하고싶다면 NFS, HostPath volume, PV(persistent volume)을 사용해야함
Kubernetes Persistent Volume
cluster-wide한 스토리지로 사용가능하고 Pod와 독립적으로 프로비저닝 및 관리가능, lifecycle도 별도로 존재
스토리지용량을 정하고 Pod별 액세스하는 방식지정 가능 (ReadWriteOnce, ReadOnlyMany, ReadWriteMany)
동적으로 StorageClass를 이용하여 프로비저닝 가능 (Local, AWS, NFS등 뭐를 쓸지)
정적으로 사용자가 미리 생성하여 사용가능
Filesystem으로 마운트하거나 Block모드로 사용가능
PVC에서 스펙과 상태를 포함하는데, PV volumemode, PVC volumemode, 바인딩결과 등 케이스가 여러개가 존재
재사용 정책도 존재하여, Retain(수동 재활용), Delete(PV해제 시 삭제), Recycle(데이터만 삭제하고 볼륨은 재사용)등의 설정이 가능
#PV yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv0003
spec:
capacity:
storage: 5Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Recycle
storageClassName: slow
mountOptions:
- hard
- nfsvers=4.1
nfs:
path: /tmp
server: 172.17.0.2
#PVC yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: myclaim
spec:
accessModes:
- ReadWriteOnce
volumeMode: Filesystem
resources:
requests:
storage: 8Gi
storageClassName: slow
selector:
matchLabels:
release: "stable"
matchExpressions:
- {key: environment, operator: In, values: [dev]}
https://kubernetes.io/docs/concepts/storage/persistent-volumes/
PV, PVC 명세 예시
PV명세에서는 용량, 볼륨모드(Filesystem, Block), accessModes(RWO, ROX, RWX 등), 스토리지 클래스, 마운트옵션(nfs...)등을 확인 가능
PVC명세에서는 볼륨과 동일하게 볼륨모드, accessModes를 사용하고, PV와 같은 storageclass를 사용하여 bind되는 것을 볼 수 있음. 추가로 selector를 통해 필터링하여 바인딩 가능
'개발 > 개발공부' 카테고리의 다른 글
Kubernetes CNI / Container Network Interface, 네트워크 (2) | 2023.06.04 |
---|---|
Ansible vs Terraform / 앤서블, 테라폼, 차이 (0) | 2023.05.30 |
Kubernetes cordon, drain / pod schedule, 제거, node (1) | 2023.04.01 |
Go-git / golang, git client, 깃, github (0) | 2023.03.19 |
FQDN / Fully Qualified Domain Name, 도메인, Kubernetes cluster domain (0) | 2023.03.12 |
댓글