要求 #
- kubernetes 版本 1.7+,velero 的每个主版本对 kuberetes 的版本要求不同,详情请参考官方文档说明。 官方文档通道
- velero 所在服务器有 kubectl 命令, 且能连上集群
我们先从最简单的体验开始
1. 安装 velero 客户端 #
下载二进制安装包, 点击 latest release, 下载 velero-v1.7.0-linux-amd64.tag.gz
(以 release 页面为准), 解压
|
|
然后将二进制文件 velero 移动到 $PATH 中的一个目录, 如 /usr/local/bin
2. 创建 credentials #
备份文件保存在对象存储中, 在当前目录下创建 credentials-velero 文件, 声明连接对象存储所用的账号密码
|
|
3. 安装 velero 服务端 #
通过 velero 客户端在 kubernetes 中安装 deployment/velero,velero 提供了很多 stroage provider, 能将备份文件存储到比如 aws, aliyun-oss 中, 他们大都是支持 s3 接口的. 下面这个例子使用 s3 接口兼容的对象存储:
|
|
4. 进行一次备份 #
|
|
查看所有的备份
|
|
5. 恢复指定的 namespace #
|
|
恢复时忽略存储卷,默认是true。根据自己实际情况配置。
6. 每日定时更新整个集群 #
|
|
至此体验结束, 下面是一些拓展内容
拓展内容 #
备份文件存在哪里? #
BackupStorageLocations
: 用来存储 kubernetes 原数据, 包括各种资源的配置清单等。这个命令可以看到上面安装 velero 时自动创建的 BackupStorageLocations 资源
|
|
VolumeSnapshotLocation
: 用来存储存储卷的数据。这个命令可以看到上面安装 velero 时自动创建的 VolumeSnapshotLocation 资源
|
|
BackupStorageLocations #
首先, 创建后端存储使用的密钥文件,在 velero namespace 下创建对接 BackupStorageLocations
使用的 secret
|
|
这里创建一个叫 credentials 的 secret, 键: bsl
, 值: </path/to/credentialsfile>
, 后面 velero 和 BackupStorageLocations 通讯时候就用这个 credentials,下面使用这个 secret 创建 BackupStorageLocations。
|
|
下面这个命令可以查看新创建的 BackupStorageLocations 是否可以使用, 如果有 Avaliable
表示创建成功
|
|
当我们使用这个 BackupStorageLocations 进行备份的时候, 可以使用 --storage-location
标志, 如下
|
|
或者不使用 --storage-location <bsl-name>
标志, 直接将它设置为默认 BackupStorageLocations, 这样
|
|
当然, 如果想更改 credetial, 可以重新创建一个 secret 然后使用下面命令更换 secret 即可,
|
|
2021.12.22日补充 #
问题1: 我在使用 velero v1.1.0 备份一个经过二开的 kubernetes 集群, 发现每次执行 schedule 都会报错。
|
|
google 发现有人遇到了这个问题,大概是内存不够导致通讯失败。
参考 issue,按照 @skriss 所说, 提高 deployment/velero limits.memory 问题就解决了, 我的配置是 1024Mi