파드
가 생성, 삭제될 때 같이 생성, 삭제되는 임시 볼륨이다.apiVersion: v1 # 파드 형태 배포
kind: Pod
metadata:
name: pod-emptydir
labels:
app: nginx
spec:
containers:
- name: web-page
image: nginx
volumeMounts:
- mountPath: /usr/share/nginx/html
name: empty-directory
- name: html-builder
image: alpine
volumeMounts:
- mountPath: /html-dir
name: empty-directory
command: ["/bin/sh", "-c"]
args:
- echo "This page created on $(date +%Y-%m-%d)" > /html-dir/index.html;
sleep infinity;
volumes:
- name: empty-directory
emptyDir: {}
emptyDir
과 동일하지만,emptyDir
볼륨 데이터는 임시적이라 파드가 삭제되면 파드 볼륨내 데이터도 삭제되는데,hostPath
볼륨 데이터는 해당 파드가 삭제되어도 hostPath 볼륨 데이터는 삭제되지 않아 다른 파드에서 계속 사용할 수 있습니다.apiVersion: apps/v1
kind: Deployment
metadata:
name: deploy-hostpath
labels:
app: deploy-hostpath
spec:
replicas: 3
selector:
matchLabels:
app: deploy-hostpath
template:
metadata:
labels:
app: deploy-hostpath
spec:
containers:
- name: host-mon
image: sysnet4admin/sleepy
volumeMounts:
- mountPath: /host-log
name: hostpath-directory
volumes:
- name: hostpath-directory
hostPath:
path: /var/log
네트워크 파일 시스템
apiVersion: apps/v1
kind: Deployment
metadata:
name: deploy-nfs
labels:
app: deploy-nfs
spec:
replicas: 3
selector:
matchLabels:
app: deploy-nfs
template:
metadata:
labels:
app: deploy-nfs
spec:
containers:
- name: chk-log
image: sysnet4admin/chk-log
volumeMounts:
- name: nfs-vol
mountPath: /audit
volumes:
- name: nfs-vol
nfs:
server: 192.168.1.10
path: /nfs_shared/nfs-vol
PV
Volume 자체
를 의미한다.PVC
accessModes
접근모드 | 설명 | 약어 |
---|---|---|
ReadWriteOnce | 하나의 노드에서만 볼륨을 읽고 쓸 수 있게 마운트 | RWO |
ReadOnlyMany | 여러 개의 노드가 읽도록 마운트 | ROX |
ReadWriteMany | 여러 개의 노드가 읽고 쓸 수 있도록 마운트 | RWX |
persistentVolumeReclaimPolicy
반환 정책 | 설명 |
---|---|
Retain(보존) | PVC 삭제 시에도 PV 보존 |
Delete(삭제) | PVC 삭제 시에도 PV를 함께 삭제 |
Recycle(재활용) | 더이상 사용되지 않음 |
StorageClass
사용프로비저닝
정적 프로비저닝
동적 프로비저닝
바인딩
반환
스테이트풀셋
의 목적은 상태를 가지고 있는 것이다.volumeClaimTemplates
으로 클레임하면 각각의 PV를 가지게 된다.apiVersion: apps/v1
kind: StatefulSet
metadata:
name: sts
spec:
replicas: 3
serviceName: sts-svc-domain #statefulset need it
selector:
matchLabels:
app: sts
template:
metadata:
labels:
app: sts
spec:
containers:
- name: chk-hn
image: sysnet4admin/chk-hn
volumeMounts:
- name: each-sts-backup
mountPath: /backup_data
volumeClaimTemplates:
- metadata:
name: each-sts-backup
spec:
accessModes: [ "ReadWriteOnce" ]
storageClassName: "managed-nfs-storage"
resources:
requests:
storage: 20Gi