前提条件:
需要有一个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了