쿠버네티스는 파드가 오류로 인해 사라지면, 디플로이가 이를 삭제하고 새로운 파드로 대체한다.
하지만 만약 파드에 데이터가 저장되어 있다면 저장된 데이터가 삭제될 것이다.
파드 수준의 스토리지이며, 파드와 같은 생에 주기를 갖는다.
파드가 재시작되더라도 유지된다.
volumes:
- name: data
emptyDir: {}
하지만 파드가 대체되어 새 파드를 만들면 해당 내용은 지워진다.
노드의 디스크를 가리키는 볼륨.
호스트경로 볼륨이라 한다.
컨테이너 파일 시스템에 마운트되는 형태로 쓰인다.
파드가 교체되어도 데이터를 유지하지만, 파드가 같은 노드에 배치되었을 때만 데이터를 유지한다.
volumes:
- name: node-root
hostPath:
path: /
type: Directory
노드가 한 개 이상일 경우 문제가 발생할 수 있으며, 모든 파드에서 해당 노드의 파일 시스템에 접근할 수 있는 보안 취약점이 발생할 수 있다.
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv01
spec:
capacity:
storage: 50Mi
accessModes:
- ReadWriteOnce
local:
path: /volumes/pv01
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: sectet
operator: In
values:
- ch05
이 방법은 한 노드에만 볼륨을 위치시키기 때문에 노드에 레이블을 달아 식별하는것이 좋다.
파드가 해당 영구볼륨을 사용하려면 영구볼륨클레임을 사용해야 한다.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: postgres-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 40Mi
storageClassName: ""