Velero在Linux上部署需完成客户端安装、对象存储配置、服务端部署及验证:支持MinIO本地/集群内部署、公有云S3对接、离线镜像部署五种方式,最后须验证CRD、Pod状态、日志、备份位置及测试备份。

如果您尝试在Linux系统上为Kubernetes集群部署Velero以实现资源与持久卷的安全备份与恢复,则需完成客户端安装、后端对象存储配置、服务端部署及验证等关键环节。以下是多种可行的安装与配置方法:
一、使用MinIO作为本地S3兼容存储后端安装Velero
该方法适用于无云厂商环境或测试/开发集群,通过Docker或Kubernetes原生方式部署MinIO,并将其作为Velero的备份目标存储。MinIO提供高可用、轻量级的对象存储能力,与Velero深度兼容。
1、在Linux主机上拉取并运行MinIO容器,暴露9000(API)和9001(控制台)端口:
2、设置环境变量MINIO_ROOT_USER和MINIO_ROOT_PASSWORD,例如admin/admin123456;
3、执行docker run命令启动MinIO,挂载宿主机目录如/data/minio作为数据卷;
4、浏览器访问http://宿主机IP:9001,使用上述凭据登录,创建名为velero的Bucket;
5、在Linux主机创建认证文件credentials-velero,内容格式为INI结构,包含[default]节及aws_access_key_id、aws_secret_access_key字段;
6、下载Velero客户端二进制包(如v1.15.2-linux-amd64.tar.gz),解压后将velero可执行文件复制至/usr/local/bin/;
7、执行velero install命令,指定--provider aws、--bucket velero、--secret-file路径、--use-volume-snapshots=false,并通过--backup-location-config传入s3Url=http://MinIO服务地址:9000及s3ForcePathStyle="true";
二、使用Kubernetes原生MinIO部署并集成Velero
该方法将MinIO以StatefulSet形式部署于Kubernetes集群内部,避免对外暴露端口,提升安全性与网络可达性,适合生产环境隔离要求较高的场景。
1、应用YAML清单部署MinIO,例如从gitee.com/alivv/elvin-demo/raw/master/k8s/3.data-minio.yml获取;
2、确认MinIO Pod运行于kube-public命名空间,Service名为minio,ClusterIP可被其他Pod解析;
3、创建Secret或本地凭证文件,内容与方法一相同,但s3Url应设为http://minio.kube-public.svc:9000;
4、执行velero install时,省略--use-node-agent参数,确保--backup-location-config中region=minio且s3Url指向集群内服务地址;
5、检查velero Pod是否处于Running状态,通过kubectl -n velero get pods验证;
6、查看Velero日志确认无FailedScheduling或Insufficient cpu类错误,必要时为节点分配至少2核CPU资源;
三、对接公有云S3兼容对象存储安装Velero
该方法适用于已使用阿里云OSS、腾讯云COS或百度BOS等公有云存储服务的用户,利用云厂商提供的S3 API接口直接作为备份后端,具备高持久性与跨区域容灾能力。
1、在对应云平台创建专用Bucket,例如阿里云OSS中命名为velero-aliyun,开启读写权限;
2、生成RAM子账号AccessKey ID与AccessKey Secret,并限制其仅对目标Bucket拥有PutObject、GetObject、ListBucket等最小权限;
3、创建credentials-velero文件,填入云平台提供的AK/SK;
4、执行velero install命令,--s3Url参数需按云厂商规范填写,例如阿里云为https://oss-cn-hangzhou.aliyuncs.com,并设置s3ForcePathStyle="false";
5、region参数必须与Bucket所在地域一致,如oss-cn-hangzhou、cos-ap-beijing等;
6、若使用百度BOS,需额外配置s3Url=https://s3.bj.bcebos.com且region=bj;
四、离线环境使用私有镜像仓库部署Velero
该方法针对无法访问互联网的封闭网络环境,所有组件镜像均需预先导入至本地registry,并在安装过程中显式指定镜像地址,避免拉取失败。
1、提前下载velero主镜像及插件镜像,例如registry.cn-shenzhen.aliyuncs.com/hxlk8s/velero:v1.15.0与registry.cn-shenzhen.aliyuncs.com/hxlk8s/velero-plugin-for-aws:v1.11.0;
2、使用docker load -i命令将镜像导入本地Docker daemon;
3、推送至内网Harbor或Nexus Registry,确保Kubernetes节点可pull;
4、执行velero install时,必须显式传入--image与--plugins参数,值为内网镜像全路径;
5、--secret-file路径需为Linux主机上的绝对路径,且velero进程需有读取权限;
6、添加--wait参数使命令阻塞直至Velero Deployment就绪,便于即时发现部署异常;
五、验证Velero安装状态与基础功能
该步骤用于确认Velero服务端组件已正确注册CRD、启动控制器并能与后端存储通信,是后续执行备份操作的前提条件。
1、运行kubectl get crds -l component=velero,确认backups.velero.io、restores.velero.io等核心CRD均已创建;
2、执行kubectl -n velero get pods,检查velero Pod状态为Running且READY为1/1;
3、查看Pod日志:kubectl logs deployment/velero -n velero | grep -i "backupstoragelocation",确认成功加载备份位置;
4、运行velero backup-location get,输出应显示Available状态的location条目;
5、手动创建一次测试备份:velero backup create test-install --include-namespaces default --dry-run=false;
6、检查MinIO或云存储Bucket中是否生成以velero/开头的目录结构及tar.gz压缩包;

















