前提条件:

需要有一个K8S集群!

一、概述

Velero是一个开源工具,可以安全地备份和还原,执行灾难恢复以及迁移Kubernetes集群资源和持久卷。

二、docker安装minio

mkdir -p /home/minio
docker run -p 9000:9000 -p 9090:9090 \
--name minio \
-d --restart=always \
-e "MINIO_ACCESS_KEY=admin" \
-e "MINIO_SECRET_KEY=admin12345" \
-v /home/minio/data:/data \
minio/minio server \
/data --console-address ":9090" --address ":9000"

docker ps -l #查看刚刚创建的容器
CONTAINER ID   IMAGE         COMMAND                  CREATED         STATUS         PORTS                                                                                  NAMES
9b0fc98ecfb8   minio/minio   "/usr/bin/docker-ent…"   5 seconds ago   Up 3 seconds   0.0.0.0:9000->9000/tcp, :::9000->9000/tcp, 0.0.0.0:9090->9090/tcp, :::9090->9090/tcp   minio

三、登录minio创建Buckets

3.1 minio管理端登录
地址:http://ip:9090 账号是:admin 密码是:admin12345
在这里插入图片描述
3.2创建Buckets桶名为: data

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

四、在k8s上安装velero

说明:在能连接到k8s集群并安装有kubectl命令行的主机上安装velero。

4.1、下载 velero

#下载 velero后,解压并将 velero 复制到 /usr/local/bin/

wget https://github.com/vmware-tanzu/velero/releases/download/v1.9.0/velero-v1.9.0-linux-amd64.tar.gz
tar -zxvf velero-v1.9.0-linux-amd64.tar.gz
cp velero-v1.9.0-linux-amd64/velero /usr/local/bin/

4.2、下载镜像 velero/velero-plugin-for-aws:v1.2.1 和velero/velero:v1.9.0

docker pull velero/velero-plugin-for-aws:v1.2.1
docker pull velero/velero:v1.9.0

4.3、创建密钥并安装velero

cat > /root/minio/credentials-velero <<EOF
[default]
aws_access_key_id = admin
aws_secret_access_key = admin12345
EOF

4.4、安装velero

bucket要填写在minio控制台创建的名字:data
secret-file要指向前面创建的秘钥文件:/home/minio/credentials-velero

velero install \
    --provider aws \
    --plugins velero/velero-plugin-for-aws:v1.2.1 \
    --bucket data \
    --secret-file /home/minio/credentials-velero \
    --use-volume-snapshots=false \
    --backup-location-config     region=minio,s3ForcePathStyle="true",s3Url=http://192.168.243.180:9000

4.5 查看velero安装状态

 kubectl get pods -n test #查看到容器运行了
NAME                     READY   STATUS    RESTARTS   AGE
httpd-757fb56c8d-mf2bz   1/1     Running   1          11h
nignx-58d8f48b6d-z84x6   1/1     Running   1          11h

五、备份k8s

5.1、创建测试应用

kubectl create ns test 
kubectl -n test create deploy nignx --image=nginx 
kubectl -n test create deploy httpd --image=httpd

5.2、备份test命名空间

# velero backup create test-$(date +%s) --include-namespaces test -n velero
 
velero backup create backup-test --include-namespaces test -n velero #执行备份后就看到如下的图片信息了

在这里插入图片描述在这里插入图片描述
5.3、删除test命名空间

kubectl delete deploy  -n test --all #删除空间后,空间下的所有容器都没有了,下面我们就恢复
kubectl get pods -n test

5.4、 恢复备份

velero restore create --from-backup backup-test --wait
kubectl get pods -n test #现在重新看到pod了
Logo

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

更多推荐