将K8S集群迁移到云容器引擎集群 安装MinIO MinIO 是一个兼容S3接口协议的高性能对象存储开源工具。由于源集群与目标集群都需要能够访问到对象存储服务,建议单独申请一台ECS并绑定EIP作为MinIO服务的载体,源集群与目标集群可以方便的通过公网连接MinIO服务。单独申请一台ECS的另一个好处是将备份资源与集群资源区分开,出问题时彼此不会互相影响。 1、下载MinIO mkdir /opt/minio mkdir /opt/miniodata cd /opt/minio wget chmod +x minio sudo mv minio /usr/local/bin/ 2、设置MinIO的用户名和密码 注意 此方法设置的用户名及密码为临时环境变量,在服务重启后需要重新设定。 export MINIOROOTUSERminio export MINIOROOTPASSWORDminio123! 3、启动服务 ./minio server /opt/miniodata/ consoleaddress ":30000" & 以上命令指定了/opt/miniodata目录为备份数据存储的路径,30000端口为console访问端口。关于minio的详细启动参数,请参见:MinIO服务器命令介绍。 4、浏览器访问 console界面。 安装Velero 首先前往MinIO console界面,创建存放备份文件的桶并命名为velero。此处桶名称可自定义,但安装Velero时必须指定此桶名称,否则将无法访问导致备份失败。 注意 Velero服务端在源集群与目标集群上都需要部署,并且部署方法是一致的; 以下命令建议分别在源集群和目标集群的master上执行。 1、下载Velero wget tar xvf velerov1.7.0linuxamd64.tar.gz cp ./velerov1.7.0linuxamd64/velero /usr/local/bin 2、创建密钥文件credentialsvelero,用于连接备份数据的对象存储,文件内容如下,注意与安装MinIO时的用户名和密码一致: [default] awsaccesskeyid minio awssecretaccesskey minio123! 3、部署Velero服务端 velero install provider aws plugins velero/veleropluginforaws:v1.2.1 bucket velero secretfile ./credentialsvelero userestic usevolumesnapshotsfalse backuplocationconfig regionminio,s3ForcePathStyle"true",s3Url 以上命令bucket参数需要修改为已创建的对象存储桶名称,本例中为velero。backuplocationconfig参数中的s3Url要修改为安装MinIO时ECS的EIP和设置的对应端口。关于更多自定义安装参数,请参见:Velero安装文档。 4、Velero实例将默认创建一个名为velero的namespace,执行以下命令可查看pod状态。 $ kubectl get pod n velero NAME READY STATUS RESTARTS AGE resticxxxxx 1/1 Running 0 50s veleroxxxxxxxxxxxxxx 1/1 Running 0 50s 5、查看Velero工具与对象存储的对接情况,状态需要为available $ velero backuplocation get NAME PROVIDER BUCKET/PREFIX PHASE LAST VALIDATED ACCESS MODE DEFAULT default aws velero Available 20240404 11:08:12 +0800 CST ReadWrite true