velero结合minio实现k8s数据备份

minio部署

minio在这里是用来保存velero的备份数据,如果你有其它对象存储服务,也可以用它们来替换minio。

minio是一款高性能、分布式的对象存储系统,采用Go语言实现,兼容Amazon S3接口,客户端与存储服务器之间采用http/https通信协议。
minio官网:https://min.io/
minio中文网站:http://www.minio.org.cn/

minio支持单机部署和分布式部署,这里选择容器方式单机部署。

mkdir /data/minio #创建minio的数据目录
docker pull quay.io/minio/minio

docker run -d --restart=always -p 172.29.21.67:9000:9000 -p 172.29.21.67:9999:9999 --name minio2 -v /data/minio/data:/data -e “MINIO_ROOT_USER=admin” -e “MINIO_ROOT_PASSWORD=12345678” quay.io/minio/minio server /data --console-address “0.0.0.0:9999”

访问http://120.77.146.92:9999/

创建bucker
在这里插入图片描述
在这里插入图片描述

部署velero

下载

wget  https://ghproxy.com/https://github.com/vmware-tanzu/velero/releases/download/v1.12.0/velero-v1.12.0-linux-amd64.tar.gz

root@server01:~/k8s/volero# tar -xf velero-v1.12.0-linux-amd64.tar.gz 
root@server01:~/k8s/volero# cd velero-v1.12.0-linux-amd64/
echo 'source <(velero completion bash)' >>~/.bashrc
source .bashrc
velero --help

配置velero访问minio

root@server01:~# mkdir /data/velero
root@server01:~# cd /data/velero/
root@k8s-master1:/data/velero# vim velero-auth.txt
[default]
aws_access_key_id = admin
aws_secret_access_key = 12345678

配置velero访问k8s

root@server01:/data/velero# openssl genrsa --out velero-user.key 2048
root@server01:/data/velero# openssl req -new -key velero-user.key -out velero-user.csr -subj “/CN=velero-user/O=k8s”
在这个命令中,您正在使用OpenSSL生成一个证书签名请求(CSR)。CSR 是一种文件,包含用于生成数字证书的信息。下面是一些命令中参数的解释:

  • req: OpenSSL 的请求子命令,用于生成证书签名请求。
  • -new: 创建一个新的证书签名请求。
  • -key velero-user.key: 指定用于生成 CSR 的私钥文件。
  • -out velero-user.csr: 指定生成的 CSR 文件的输出路径和文件名。
  • -subj "/CN=velero-user/O=k8s": 指定用于生成 CSR 的主题信息。在这里,CN(Common Name)字段设置为 “velero-user”,O(Organization)字段设置为 “k8s”。

执行该命令后,OpenSSL将使用提供的私钥文件生成一个带有所需主题信息的 CSR 文件(velero-user.csr)。该 CSR 文件可以用于向证书颁发机构(CA)申请数字证书,以便在 Kubernetes 中使用。

openssl x509 -req -days 3650 -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -in velero-user.csr -out velero-user.crt
Certificate request self-signature ok
subject=CN = velero-user, O = k8s

这个命令使用 OpenSSL 和早期生成的证书签名请求(CSR)来生成一个自签名的数字证书。下面是命令中参数的解释:

  • x509: OpenSSL 的 X.509 子命令,用于生成和管理数字证书。
  • -req: 告诉 OpenSSL 使用证书签名请求(CSR)来生成证书。
  • -days 3650: 指定证书的有效期限,以天为单位。在这里,证书的有效期将设置为 3650 天(大约 10 年)。
  • -CA /etc/kubernetes/pki/ca.crt: 指定用于签名证书的 CA(颁发机构)的证书文件路径。
  • -CAkey /etc/kubernetes/pki/ca.key: 指定用于签名证书的 CA 的私钥文件路径。
  • -CAcreateserial: 告诉 OpenSSL 创建一个序列号文件,用于给新生成的证书分配一个唯一的序列号。
  • -in velero-user.csr: 指定要使用的证书签名请求(CSR)文件的路径。
  • -out velero-user.crt: 指定要生成的证书文件的路径和文件名。

通过执行该命令,OpenSSL 使用 CA 的证书和私钥来签名 CSR,生成一个带有所需有效期限和其他信息的证书(velero-user.crt)。这个自签名的证书可以用于安全地加密和验证在 Kubernetes 中使用的通信。

准备kubeconfig认证文件

kubectl config set-cluster k8s-cluster1 --embed-certs --server=https://kubeapi.luohw.com:6443 --certificate-authority=/etc/kubernetes/pki/ca.crt --kubeconfig=/data/velero/velero-user.config

kubectl config set-credentials velero-user --embed-certs --client-certificate=/data/velero/velero-user.crt --client-key=/data/velero/velero-user.key --kubeconfig=/data/velero/velero-user.config

root@server01:/data/velero# kubectl config set-context velero-user@k8s-cluster1 --cluster=k8s-cluster1 --user=velero-user --kubeconfig=/data/velero/velero-user.config

root@server01:/data/velero# kubectl config use-context velero-user@k8s-cluster1 --kubeconfig=/data/velero/velero-user.config

为velero-user用户授权
kubectl create clusterrolebinding velero-user@clusteradmin --clusterrole=cluster-admin --user=velero-user

kubectl create ns velero-system
velero  install --kubeconfig=/data/velero/velero-user.config \
> --provider aws \
> --plugins velero/velero-plugin-for-aws:v1.3.1 \
> --bucket 20231008-data \
> --secret-file /data/velero/velero-auth.txt \
> --use-volume-snapshots=false \
> --namespace velero-system \
>  --backup-location-config region=minio,s3ForcePathStyle="true",s3Url=http://120.77.106.92:9999

–bucket 指定在mino创建的bucket
不分行写
velero install --kubeconfig=/data/velero/velero-user.config --provider aws --plugins velero/velero-plugin-for-aws:v1.3.1 --bucket 20231008-data --secret-file /data/velero/velero-auth.txt --use-volume-snapshots=false --namespace velero-system --backup-location-config region=minio,s3ForcePathStyle=“true”,s3Url=http://120.77.106.92:9000

velero --kubeconfig ./awsuser.kubeconfig
install
–provider aws
–plugins velero/velero-plugin-for-aws:v1.3.1
–bucket velerodata \ #
–secret-file ./velero-auth.txt
–use-volume-snapshots=false
–namespace velero-system
–backup-location-config region=minio,s3ForcePathStyle=“true”,s3Url=http://120.77.106.92:9000

velero install --kubeconfig=/data/velero/velero-user.config --provider aws --plugins velero/velero-plugin-for-aws:v1.3.1 --bucket 20231008-data --secret-file /data/velero/velero-auth.txt --use-volume-snapshots=false --namespace velero-system --backup-location-config region=minio,s3ForcePathStyle=“true”,s3Url=http://172.29.21.67:9000
注意:阿里云要使用内网地址的9000端口 9000端口是备份数据端口,而9999是web访问端口

等待velero Pod成功启动且无报错就表示安装成功

root@server01:/data/velero# kubectl get pods,deployments.apps  -n velero-system 
NAME                          READY   STATUS    RESTARTS   AGE
pod/velero-849496b564-8xcg2   1/1     Running   0          3m21s

NAME                     READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/velero   1/1     1            1           3m21s

velero使用

创建备份失败
在这里插入图片描述
经过排查,备份失败是因为s3Url指定错误,要指定9000端口,公有云要指定内网地址,http://172.29.21.67:9000

测试后
新建命名空间重新安装velero到velero-luo命名空间

kubectl create ns   velero-luo 
velero  install --kubeconfig=/data/velero/velero-user.config --provider aws --plugins velero/velero-plugin-for-aws:v1.3.1 --bucket 20231008-data --secret-file /data/velero/velero-auth.txt --use-volume-snapshots=false --namespace velero-system  --backup-location-config region=minio,s3ForcePathStyle="true",s3Url=http://172.29.21.67:9000

创建备份

velero backup create default-ns-backup666 --include-cluster-resources=true --include-namespaces default --namespace velero-luo --kubeconfig=/data/velero/velero-user.config

查看是否备份成功

velero backup get -n velero-luo
completed 代表完成
在这里插入图片描述

velero backup describe default-ns-backup666 -n velero-luo
在这里插入图片描述

访问web刷新后就有数据了
在这里插入图片描述

删除数据

root@server01:/data/velero# kubectl delete deployments.apps  demoapp11 
deployment.apps "demoapp11" deleted

root@server01:/data/velero# kubectl get pods
NAME                         READY   STATUS    RESTARTS       AGE
daemonset-demo-whcn9         1/1     Running   7 (5h2m ago)   7d10h
demoapp10-8478cb7d59-7qvp5   1/1     Running   0              30h
demoapp11-798f578849-j5tbj   1/1     Running   0              30h
demodb-0                     1/1     Running   4 (5h2m ago)   2d5h
demodb-1                     1/1     Running   3 (5h2m ago)   2d5h
my-dep2-7854ff8877-7wm5n     1/1     Running   0              2d5h
redistest-95d5f44c5-jrlhh    1/1     Running   0              2d5h
test2-95c8ddcd-d9m8h         1/1     Running   0              2d5h
test2-95c8ddcd-mm66z         1/1     Running   0              2d5h


root@server01:/data/velero# kubectl delete deployments.apps  demoapp11 
deployment.apps "demoapp11" deleted
root@server01:/data/velero# velero  restore  create  --wait  --from-backup default-ns-backup666 --kubeconfig=/data/velero/velero-user.config -n velero-luo
Restore request "default-ns-backup666-20231008222116" submitted successfully.
Waiting for restore to complete. You may safely press ctrl-c to stop waiting - your restore will continue in the background.
.......................................
Restore completed with status: Completed. You may check for more information using the commands `velero restore describe default-ns-backup666-20231008222116` and `velero restore logs default-ns-backup666-20231008222116`.

demoapp11成功恢复
root@server01:/data/velero# kubectl get pods
NAME                         READY   STATUS    RESTARTS       AGE
daemonset-demo-whcn9         1/1     Running   7 (5h6m ago)   7d10h
demoapp10-8478cb7d59-7qvp5   1/1     Running   0              30h
demoapp11-798f578849-j5tbj   1/1     Running   0              37s
demodb-0                     1/1     Running   4 (5h6m ago)   2d5h
demodb-1                     1/1     Running   3 (5h6m ago)   2d5h
my-dep2-7854ff8877-7wm5n     1/1     Running   0              2d5h
redistest-95d5f44c5-jrlhh    1/1     Running   0              2d5h
test2-95c8ddcd-d9m8h         1/1     Running   0              2d5h

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值