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也有了。
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
velero get backups查看备份
还原:velero restore create --from-backup 你的备份名 --restore-volumes
然后kubectl get ns查看
名字变了还原成功 但是这个测试不带PVC数据 更多集成可以看
https://openebs.io/docs/2.12.x/concepts/localpv