Test 리소스 생성

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

아래와 같이 뜬다면 정상적으로 백업이 안된 것임

Untitled

(옵션)주기적인 백업

cronjob처럼 주기적으로 백업할수도 있다. 아래 예시는 매분마다 업데이트한다.

velero schedule create nginx-backup --selector app=nginx --schedule="* * * * *" --snapshot-volumes

Kubectl 로 백업/백업 스케쥴 확인

kubectl get backups.velero.io -n velero
kubectl get schedules.velero.io -n velero

삭제후 복구해보기

namespace가 삭제되면서 모든 리소스들이 사라진다.

kubectl delete namespaces nginx-example