k8s集群备份(迁移)工具velero
# 参考地址:https://support.huaweicloud.com/bestpractice-cce/cce_bestpractice_0306.html
# 参考地址:https://github.com/vmware-tanzu/velero
# 参考地址:https://velero.io/
# 下载
curl --socks5 ss5.iovhm.com:8080 -OL https://github.com/vmware-tanzu/velero/releases/download/v1.7.0/velero-v1.7.0-linux-amd64.tar.gz
## --socks5 ss5.iovhm.com:8080 # 使用 socks5 代理翻墙
## -O 保存文件
## -L 自动重定向
# 解压
tar -xvzf velero-v1.7.0-linux-amd64.tar.gz
# 复制到 /usr/local/bin/
cp velero /usr/local/bin/
# 配置存储位置 minio,请先自行安装minio,并将minio的 AK/SK填入下面
vi key
[default]
aws_access_key_id=
aws_secret_access_key=
###### 以下命令需要在有kubectl的那台机器执行 ######
# 安装
velero install \
--provider aws \
--image harbor.iovhm.com/hub/velero/velero:v1.7.0 \
--plugins velero/velero-plugin-for-aws:v1.2.1 \
--bucket kube-deployment \
--secret-file ./key \
--use-restic \
--use-volume-snapshots=false \
--backup-location-config region=minio,s3ForcePathStyle="true",s3Url=http://minio-test.abc.com/
## --bucket kube-deployment # minio 中的存储捅的名称,需要提前建好
## --secret-file ./key # minio ak文件路径
## region=minio # 随便填,如果是备份到其他与s3兼容系统(例如云上的对象存储),可能需要地域值。
## s3Url=http://minio-test.abc.com/ # minio的地址,注意,是客户端地址(默认9000那个),不是console地址
# 查看存储库状态,如果显示Available则表示安装成功,否则请根据屏幕提示查找问题
velero backup-location get
# 查看备份记录
velero backup get
# 建立备份
velero backup create huawei-whdev-test.2023.0715.23 --exclude-namespaces cattle-prometheus,cattle-system,fleet-system,ingress-nginx,kube-node-lease,kube-public,kube-system,velero,default
## huawei-whdev-test.2023.0715.23 ,备份名称
## --exclude-namespaces, 不备份的名字空间,多个命名空间用逗号隔开(,),注意,是k8s命名空间,不是rancher的项目名称,不指定则全部备份
## --include-namespaces, 备份这些命名空间,多个命名空间用逗号隔开(,),注意,是k8s命名空间,不是rancher的项目名称,不指定则全部备份
## 强烈建议,首次备份全备,后续不备份 kube-system,kube-public,cattle-system 等系统命名空间,总之,不是你手工建立的都不要备份,因为velero会将kube-system等系统命名空间也进行备份和恢复。可能造成k8s环境系统异常。
## kubectl get ns # 查看集群的命名空间
# 查看备份记录
velero backup get
# 备份恢复(在有kubectl的那台机器执行)
velero restore create --from-backup [备份记录名称] --include-namespaces pk-default
# 恢复并命名空间映射
velero restore create --from-backup [备份记录名称] --include-namespaces pk-default,pk-smart --namespace-mappings src:dest,src2:dest2
## --include-namespaces 需要恢复的名字空间,不指定则全部恢复
## --exclude-namespaces 不进行还原的名字空间 ,不指定则全部恢复
## 强烈建议备份的时候不要备份kube-system等命名空间,恢复的时候不要全部恢复,恢复的时候按名称一个一个恢复,因为velero会将kube-system等系统命名空间也进行备份和恢复。可能造成k8s环境系统系统异常。
minio docker-compose
# vi docker-compose.yaml
version: '3'
services:
velero-minio:
image: minio/minio:latest
restart: always # 自动重启
privileged: true
ports:
- 33900:9000 # client 端口
- 33901:9001 # console 端口
volumes:
- ./data:/data
command: server /data --console-address :9001 --address :9000
environment:
- MINIO_ROOT_USER=
- MINIO_ROOT_PASSWORD=!
# 如果你的minio使用容器启动的,不是独立主机、正式使用的端口与部署的端口不一致,可能显示的地址错误
- MINIO_SERVER_URL=http://minio.abc.com
# 如果你的minio使用容器启动的,不是独立主机、正式使用的端口与部署的端口不一致,可能显示的地址错误
- MINIO_BROWSER_REDIRECT_URLhttp://minio-console.abc.com