kubectl apply -f - <<EOF
apiVersion: v1
kind: Namespace
metadata:
name: nginx-example
labels:
app: nginx
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: nginx-log-pvc
namespace: nginx-example
labels:
app: nginx
spec:
storageClassName: standard-rwo
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deploy
namespace: nginx-example
labels:
app: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
volumes:
- name: nginx-logs
persistentVolumeClaim:
claimName: nginx-log-pvc
containers:
- image: io.kr.ncr.ntruss.com/nks/nginx:1.9
name: nginx
ports:
- containerPort: 80
volumeMounts:
- mountPath: "/var/log/nginx"
name: nginx-logs
readOnly: false
EOF
확인
kubectl get po -n nginx-example
velero backup create nginx-backup --selector app=nginx --snapshot-volumes
아래 명령어로 백업 상태가 Completed인지 확인
velero backup describe nginx-backup
아래와 같이 뜬다면 정상적으로 백업이 안된 것임

cronjob처럼 주기적으로 백업할수도 있다. 아래 예시는 매분마다 업데이트한다.
velero schedule create nginx-backup --selector app=nginx --schedule="* * * * *" --snapshot-volumes
kubectl get backups.velero.io -n velero
kubectl get schedules.velero.io -n velero
namespace가 삭제되면서 모든 리소스들이 사라진다.
kubectl delete namespaces nginx-example