볼륨이란?
- k8s는 컨테이너를 실행할 때, 볼륨을 추가하지 않음
- deployment에 pod template에서 볼륨을 추가할 수 있음
Life time
- 볼륨은 컨테이너를 재시작해도 유지됨
- pod를 제거하면 볼륨도 제거됨
- pod 재시작시에는 데이터 초기화됨!
emptyDir
- pod를 시작시 단순히 빈 폴더를 생성
- replicas를 이용해서 복제본을 만들면 pod가 다르기 때문에 접근 불가능
- 즉, pod에 제한된 데이터 관리 방법
spec:
containers:
- name: story
image: images
volumeMounts:
- mountPath: /app/story
name: story-volume
volumes:
- name: story-volume
emptyDir: {}
- spec 및에 volumes을 선언한 후, containers에서 volumeMounts를 이용해서 사용한다.
hostPath
- pod를 실행하는 실제 머신에서 경로를 설정
- 노드 특정 범위에서 작동함
- 즉, Minikube상에서는 문제가 없지만, 노드가 증가한다면 다른 방식을 고려해야함
spec:
containers:
- name: story
image: images
volumeMounts:
- mountPath: /app/story
name: story-volume
volumes:
- name: story-volume
hostPath:
path: /data
type: DirectoryOrCreate
영구 볼륨
- pod가 삭제되어도 유지되는 볼륨
- 볼륨을 구성하고 클레임을 구성해서 연결한다.
볼륨 구성하기
apiVersion: v1
kind: PersistentVolume
metadata:
name: host-pv
spec:
capacity:
storage: 1Gi
volumeMode: Filesystem
storageClassName: standard
accessModes:
- ReadWriteOnce
- ReadOnlyMany
- ReadWriteMany
hostPath:
path: /data
type: DirectoryOrCreate
클레임 구성하기
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: host-pvc
spec:
volumeName: host-pv
accessModes:
- ReadWriteOnce
storageClassName: standard
resources:
requests:
storage: 1Gi
클레임 이용해서 연결하기
spec:
containers:
- name: story
image: images
volumeMounts:
- mountPath: /app/story
name: story-volume
volumes:
- name: story-volume
persistentVolumeClaim:
claimName: host-pvc