跳转到内容

velero 安装

Velero 官方文档

bash
# 下载 velero CLI
wget https://github.com/vmware-tanzu/velero/releases/download/v1.15.2/velero-v1.15.2-linux-amd64.tar.gz
tar -xzf velero-v1.15.2-linux-amd64.tar.gz
mv velero-v1.15.2-linux-amd64/velero /usr/local/bin/
velero version

velero 服务端部署

MinIO 作为备份存储

yaml
# minio.yaml
apiVersion: v1
kind: Namespace
metadata:
  name: velero
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: minio
  namespace: velero
spec:
  replicas: 1
  selector:
    matchLabels:
      app: minio
  template:
    metadata:
      labels:
        app: minio
    spec:
      containers:
        - name: minio
          image: minio/minio:latest
          args:
            - server
            - /data
            - --console-address
            - ":9001"
          env:
            - name: MINIO_ROOT_USER
              value: "<MINIO_USER>"
            - name: MINIO_ROOT_PASSWORD
              value: "<MINIO_PASSWORD>"
          ports:
            - containerPort: 9000
            - containerPort: 9001
          volumeMounts:
            - name: data
              mountPath: /data
      volumes:
        - name: data
          hostPath:
            path: /data/minio
---
apiVersion: v1
kind: Service
metadata:
  name: minio
  namespace: velero
spec:
  type: NodePort
  ports:
    - name: api
      port: 9000
      targetPort: 9000
      nodePort: 30900
    - name: console
      port: 9001
      targetPort: 9001
      nodePort: 30901
  selector:
    app: minio

启动 velero

bash
velero install \
  --provider aws \
  --bucket k8s-backup \
  --plugins velero/velero-plugin-for-aws:v1.11.1 \
  --secret-file ./credentials-velero \
  --use-node-agent \
  --backup-location-config region=minio,s3ForcePathStyle=true,s3Url=http://<MINIO_IP>:30900 \
  --namespace velero

credentials-velero 文件内容:

ini
[default]
aws_access_key_id=<MINIO_USER>
aws_secret_access_key=<MINIO_PASSWORD>

常用备份操作

备份

bash
# 备份所有资源
velero backup create full-backup

# 备份指定命名空间
velero backup create ns-backup --include-namespaces default,prod

# 备份排除特定资源
velero backup create app-backup --include-namespaces app --exclude-resources secrets

# 定时备份(每天凌晨 2 点)
velero schedule create daily-backup --schedule="0 2 * * *" --include-namespaces default,prod

# 查看备份列表
velero backup get

# 查看备份详情
velero backup describe full-backup --details

恢复

bash
# 从备份恢复
velero restore create --from-backup full-backup

# 恢复指定命名空间
velero restore create ns-restore --from-backup full-backup --include-namespaces prod

# 查看恢复列表
velero restore get

# 查看恢复详情
velero restore describe ns-restore --details

清理

bash
# 删除备份
velero backup delete full-backup

# 删除定时任务
velero schedule delete daily-backup

基于 MIT 许可发布