Commit 89859cfb by Administrator

更新使用文档

parent 797b9645
......@@ -10,8 +10,6 @@ require (
github.com/sirupsen/logrus v1.7.0
github.com/stretchr/testify v1.4.0
github.com/vmware-tanzu/velero v1.5.2
k8s.io/api v0.19.3
k8s.io/apimachinery v0.19.3
)
replace k8s.io/api => k8s.io/api v0.18.4
......
......@@ -70,7 +70,10 @@ Velero 由客户端和服务端组成,服务器部署在目标 k8s 集群上
- 配置修改
1. 修改 install/credentials-velero 文件,将新建用户中获得的 AccessKeyID 和 AccessKeySecret 填入,这里的 OSS EndPoint 为之前 OSS 的访问域名(注:这里需要选择外网访问的 EndPoint。):
**1.修改 install/credentials-velero 文件**
将新建用户中获得的 AccessKeyID 和 AccessKeySecret 填入,这里的 OSS EndPoint 为之前 OSS 的访问域名(注:这里需要选择外网访问的 EndPoint。):
![](http://images.joker.irybd.com/images/20201103181416_1kT5Ew_Screenshot.jpeg)
......@@ -79,47 +82,45 @@ ALIBABA_CLOUD_ACCESS_KEY_ID=<ALIBABA_CLOUD_ACCESS_KEY_ID>
ALIBABA_CLOUD_ACCESS_KEY_SECRET=<ALIBABA_CLOUD_ACCESS_KEY_SECRET>
ALIBABA_CLOUD_OSS_ENDPOINT=<ALIBABA_CLOUD_OSS_ENDPOINT>
```
2. 修改 `install/01-velero.yaml`,将 OSS 配置填入:
**2.修改 `install/01-velero.yaml`**
将 OSS 配置填入:
```yaml
---
apiVersion: velero.io/v1
kind: BackupStorageLocation
metadata:
labels:
component: velero
name: default
namespace: velero
spec:
config: {}
objectStorage:
bucket: <ALIBABA_CLOUD_OSS_BUCKET> # OSS bucket 名称
prefix: <OSS_PREFIX> # bucket 子目录
provider: alibabacloud
---
apiVersion: velero.io/v1
kind: VolumeSnapshotLocation
metadata:
labels:
component: velero
name: default
namespace: velero
spec:
config:
region: <REGION> # 地域,如果是华东2(上海),则为 cn-shanghai
provider: alibabacloud
apiVersion: velero.io/v1
kind: BackupStorageLocation
metadata:
labels:
component: velero
name: default
namespace: velero
spec:
config:
region: <REGION> # 地域,如果是华东2(上海),则为 cn-shanghai
objectStorage:
bucket: <ALIBABA_CLOUD_OSS_BUCKET> # OSS bucket 名称
prefix: <OSS_PREFIX> # bucket 子目录
provider: alibabacloud
```
3. kubernetes 部署 velero 服务
**3.kubernetes 部署 velero 服务**
```shell
# 新建 namespace
kubectl create namespace velero
# 部署 credentials-velero 的 secret
kubectl create secret generic cloud-credentials --namespace velero --from-file cloud=install/credentials-velero
# 部署 CRD
kubectl apply -f install/00-crds.yaml
# 部署 Velero
kubectl apply -f install/01-velero.yaml
# 新建 namespace
$ kubectl create namespace velero
# 部署 credentials-velero 的 secret
$ kubectl create secret generic cloud-credentials --namespace velero --from-file cloud=install/credentials-velero
# 部署 CRD
$ kubectl apply -f install/00-crds.yaml
# 部署 Velero
$ kubectl apply -f install/01-velero.yaml
```
4. 测试 Velero 状态
**4.测试 Velero 状态**
```shell
[root@node47 velero-plugin]# velero version
Client:
......@@ -128,11 +129,20 @@ Client:
Server:
Version: v1.2.0
```
5. 服务端清理
**5.服务端清理**
```shell
$ kubectl delete namespace/velero clusterrolebinding/velero
$ kubectl delete crds -l component=velero
```
kubectl delete namespace/velero clusterrolebinding/velero
kubectl delete crds -l component=velero
**6.设置 velero 命令自动补齐**
```shell
$ source <(velero completion bash)
$ echo 'source <(velero completion bash)' >>~/.bashrc
$ kubectl completion bash >/etc/bash_completion.d/velero
```
# 备份测试
velero-plugin 项目中已经给出 example 用于测试备份。
......@@ -146,8 +156,38 @@ velero-plugin 项目中已经给出 example 用于测试备份。
```velero restore create --from-backup nginx-backup --wait```
# 集群迁移
迁移方法同备份,在备份后切换集群,在新集群恢复备份即可。
注意要在两个集群中部署同样的服务端,要使用同一个存储源,如果使用阿里云 OSS,要保持 bucket、prefix、region 以及认证信息一致,然后在 A 集群中备份你需要迁移的对象:
```shell
$ velero create backup move-backup --include-namespaces default
Backup request "move-backup" submitted successfully.
Run `velero backup describe move-backup` or `velero backup logs move-backup` for more details.
```
查看阿里云 OSS 对象存储,已将资源 default 名称空间中的所有资源对象都保存到 OSS 中。
![](http://images.joker.irybd.com/images/20201104154047_B7Vnnj_Screenshot.jpeg)
在集群 B 中恢复 default 名称空间的资源对象:
```shell
# 首先查看集群 B 中 default 名称空间中并没有资源对象
[root@node24 ~]# kubectl get pod | wc -l
No resources found in default namespace.
0
# 开始恢复
$ velero restore create --from-backup move-backup --wait
Restore request "move-backup-20201104160412" 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: PartiallyFailed. You may check for more information using the commands `velero restore describe move-backup-20201104160412` and `velero restore logs move-backup-20201104160412`
# 恢复后查看 default 名称空间的资源对象
[root@node24 ~]# kubectl get pod | wc -l
48
```
# 高级用法
- 定时备份
......@@ -155,13 +195,16 @@ velero-plugin 项目中已经给出 example 用于测试备份。
对集群资源进行定时备份,则可在发生意外的情况下,进行恢复(默认情况下,备份保留 30 天)。
```shell
# 每日1点进行备份
velero create schedule <SCHEDULE NAME> --schedule="0 1 * * *"
$ velero create schedule <SCHEDULE NAME> --schedule="0 1 * * *"
# 每日1点进行备份,备份保留48小时
velero create schedule <SCHEDULE NAME> --schedule="0 1 * * *" --ttl 48h
$ velero create schedule <SCHEDULE NAME> --schedule="0 1 * * *" --ttl 48h
# 每6小时进行一次备份
velero create schedule <SCHEDULE NAME> --schedule="@every 6h"
$ velero create schedule <SCHEDULE NAME> --schedule="@every 6h"
# 每日对 web namespace 进行一次备份
velero create schedule <SCHEDULE NAME> --schedule="@every 24h" --include-namespaces web
$ velero create schedule <SCHEDULE NAME> --schedule="@every 24h" --include-namespaces web
```
>定时备份的名称为:`<SCHEDULE NAME>-<TIMESTAMP>`,恢复命令为:`velero restore create --from-backup <SCHEDULE NAME>-<TIMESTAMP>`。
......@@ -184,11 +227,12 @@ velero create schedule <SCHEDULE NAME> --schedule="@every 24h" --include-namespa
- 备份排除项目
可为资源添加指定标签,添加标签的资源在备份的时候被排除。
```
```shell
# 添加标签
kubectl label -n <ITEM_NAMESPACE> <RESOURCE>/<NAME> velero.io/exclude-from-backup=true
$ kubectl label -n <ITEM_NAMESPACE> <RESOURCE>/<NAME> velero.io/exclude-from-backup=true
# 为 default namespace 添加标签
kubectl label -n default namespace/default velero.io/exclude-from-backup=true
$ kubectl label -n default namespace/default velero.io/exclude-from-backup=true
```
# 问题汇总
......@@ -221,8 +265,8 @@ spec:
serviceAccountName: velero
containers:
- name: velero
# sync from gcr.io/heptio-images/velero:latest
image: registry-vpc.cn-shanghai.aliyuncs.com/keking/velero:latest # 修复时区后的镜像
# sync from velero/velero:v1.5.2
image: registry.cn-hangzhou.aliyuncs.com/irybd-package/velero:v1.5.2 # 修复时区后的镜像
imagePullPolicy: IfNotPresent
command:
- /velero
......
......@@ -17,11 +17,9 @@ import (
"io"
"os"
"time"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
"github.com/pkg/errors"
"github.com/sirupsen/logrus"
"archive/tar"
"bufio"
"bytes"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment