Velero 是一个开源的 Kubernetes 集群备份和恢复工具,它允许用户轻松安全地备份和恢复他们的 Kubernetes 资源和持久化卷。Velero 由 Kubernetes 的原生 API 驱动,并且与云服务提供商紧密集成,以支持不同的存储解决方案。

helm values文件地址:https://download.csdn.net/download/m0_59744084/89381635

举个例子:

准备工作:

环境:K8S环境

工具:helm(可选)、velero、minio    

比如我想备份这个mysql.yaml如下(默认安装一下openebs)或者自己的存储:

apiVersion: v1

kind: ReplicationController

metadata:

  namespace: test

  name: mysql

  labels:

    app: mysql

spec:

  replicas: 1

  selector:

    app: mysql

  template:

    metadata:

      labels:

        app: mysql

    spec:

      containers:

      - name: mysql

        image: nacos/nacos-mysql:5.7

        ports:

        - containerPort: 3306

        env:

        - name: MYSQL_ROOT_PASSWORD

          value: "root"

        - name: MYSQL_DATABASE

          value: "nacos_devtest"

        - name: MYSQL_USER

          value: "nacos"

        - name: MYSQL_PASSWORD

          value: "nacos"

        volumeMounts:

        - name: mysql-persistent-storage

          mountPath: /var/lib/mysql

          subPath: mysql

          readOnly: false

      volumes:

      - name: mysql-persistent-storage

        persistentVolumeClaim:

          claimName: mysql-dynamic-pvc

---

apiVersion: v1

kind: Service

metadata:

  namespace: test

  name: mysql

  labels:

    name: mysql

spec:

  type: NodePort

  ports:

  - port: 3306

    targetPort: 3306

  selector:

    app: mysql

---

apiVersion: v1

kind: PersistentVolumeClaim

metadata:

  namespace: test

  name: mysql-dynamic-pvc

spec:

  accessModes:

    - ReadWriteOnce

  storageClassName: openebs-hostpath

  resources:

    requests:

      storage: 5Gi

创建好后会看到test命名空间已经创建好了pv也有了。

9f70deb7436858eb7a7edf75b5034cf8.jpeg

18d0361566cda6b6575fcfa39e3646c9.jpeg

2.安装一下minio对象存储(这里我用docker测试安装,有自己配置高可用需要的可以用K8S集群安装,这里不过多演示网上有很多教程)

docker run \
-p 19000:9000 \
-p 9090:9090 \
--net=host \
--name minio \
-d --restart=always \
-e "MINIO_ACCESS_KEY=minioadmin" \
-e "MINIO_SECRET_KEY=minioadmin" \
-v /opt/minio/data:/data \
-v /opt/minio/config:/root/.minio \
minio/minio server \
/data --console-address ":9090" -address ":19000"

3.helm安装velero

添加镜像:helm repo add vmware-tanzu https://vmware-tanzu.github.io/helm-charts/

拉取包:helm pull vmware-tanzu/velero --version 6.5.0 --untar

git地址:https://github.com/vmware-tanzu/helm-charts/tree/main/charts/velero

进入values编辑,有很多注释,需要改的地方比较少可以用我的上面改地址:

https://download.csdn.net/download/m0_59744084/89381635

主要要改的地方:


configuration里:

s3Url

s3ForcePathStyle

publicUrl


credentials里:

secretContents

[default]    

  aws_access_key_id= minio账号

   aws_secret_access_key= 密码

定时任务

schedules字段可以自定义schedules时间我设置的每5分钟跑一次


然后就helm install安装:

helm install velero -f ./values ./velero

先删除ns : kubectl delete ns test

ae036d117cc70b2723317a12e93704e8.jpeg

velero get backups查看备份


还原:velero restore create --from-backup 你的备份名 --restore-volumes


然后kubectl get ns查看

8469104e24a9b562131155a47756b3e0.jpeg

名字变了还原成功 但是这个测试不带PVC数据  更多集成可以看

https://openebs.io/docs/2.12.x/concepts/localpv

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐