Commit 89859cfb by Administrator

更新使用文档

parent 797b9645
...@@ -10,8 +10,6 @@ require ( ...@@ -10,8 +10,6 @@ require (
github.com/sirupsen/logrus v1.7.0 github.com/sirupsen/logrus v1.7.0
github.com/stretchr/testify v1.4.0 github.com/stretchr/testify v1.4.0
github.com/vmware-tanzu/velero v1.5.2 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 replace k8s.io/api => k8s.io/api v0.18.4
......
...@@ -70,7 +70,10 @@ Velero 由客户端和服务端组成,服务器部署在目标 k8s 集群上 ...@@ -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) ![](http://images.joker.irybd.com/images/20201103181416_1kT5Ew_Screenshot.jpeg)
...@@ -79,47 +82,45 @@ ALIBABA_CLOUD_ACCESS_KEY_ID=<ALIBABA_CLOUD_ACCESS_KEY_ID> ...@@ -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_ACCESS_KEY_SECRET=<ALIBABA_CLOUD_ACCESS_KEY_SECRET>
ALIBABA_CLOUD_OSS_ENDPOINT=<ALIBABA_CLOUD_OSS_ENDPOINT> ALIBABA_CLOUD_OSS_ENDPOINT=<ALIBABA_CLOUD_OSS_ENDPOINT>
``` ```
2. 修改 `install/01-velero.yaml`,将 OSS 配置填入:
**2.修改 `install/01-velero.yaml`**
将 OSS 配置填入:
```yaml ```yaml
--- ---
apiVersion: velero.io/v1 apiVersion: velero.io/v1
kind: BackupStorageLocation kind: BackupStorageLocation
metadata: metadata:
labels: labels:
component: velero component: velero
name: default name: default
namespace: velero namespace: velero
spec: spec:
config: {} config:
region: <REGION> # 地域,如果是华东2(上海),则为 cn-shanghai
objectStorage: objectStorage:
bucket: <ALIBABA_CLOUD_OSS_BUCKET> # OSS bucket 名称 bucket: <ALIBABA_CLOUD_OSS_BUCKET> # OSS bucket 名称
prefix: <OSS_PREFIX> # bucket 子目录 prefix: <OSS_PREFIX> # bucket 子目录
provider: alibabacloud 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
``` ```
3. kubernetes 部署 velero 服务
**3.kubernetes 部署 velero 服务**
```shell ```shell
# 新建 namespace # 新建 namespace
kubectl create namespace velero $ kubectl create namespace velero
# 部署 credentials-velero 的 secret
kubectl create secret generic cloud-credentials --namespace velero --from-file cloud=install/credentials-velero # 部署 credentials-velero 的 secret
# 部署 CRD $ kubectl create secret generic cloud-credentials --namespace velero --from-file cloud=install/credentials-velero
kubectl apply -f install/00-crds.yaml
# 部署 Velero # 部署 CRD
kubectl apply -f install/01-velero.yaml $ kubectl apply -f install/00-crds.yaml
# 部署 Velero
$ kubectl apply -f install/01-velero.yaml
``` ```
4. 测试 Velero 状态
**4.测试 Velero 状态**
```shell ```shell
[root@node47 velero-plugin]# velero version [root@node47 velero-plugin]# velero version
Client: Client:
...@@ -128,11 +129,20 @@ Client: ...@@ -128,11 +129,20 @@ Client:
Server: Server:
Version: v1.2.0 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 用于测试备份。 velero-plugin 项目中已经给出 example 用于测试备份。
...@@ -146,8 +156,38 @@ velero-plugin 项目中已经给出 example 用于测试备份。 ...@@ -146,8 +156,38 @@ velero-plugin 项目中已经给出 example 用于测试备份。
```velero restore create --from-backup nginx-backup --wait``` ```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 用于测试备份。 ...@@ -155,13 +195,16 @@ velero-plugin 项目中已经给出 example 用于测试备份。
对集群资源进行定时备份,则可在发生意外的情况下,进行恢复(默认情况下,备份保留 30 天)。 对集群资源进行定时备份,则可在发生意外的情况下,进行恢复(默认情况下,备份保留 30 天)。
```shell ```shell
# 每日1点进行备份 # 每日1点进行备份
velero create schedule <SCHEDULE NAME> --schedule="0 1 * * *" $ velero create schedule <SCHEDULE NAME> --schedule="0 1 * * *"
# 每日1点进行备份,备份保留48小时 # 每日1点进行备份,备份保留48小时
velero create schedule <SCHEDULE NAME> --schedule="0 1 * * *" --ttl 48h $ velero create schedule <SCHEDULE NAME> --schedule="0 1 * * *" --ttl 48h
# 每6小时进行一次备份 # 每6小时进行一次备份
velero create schedule <SCHEDULE NAME> --schedule="@every 6h" $ velero create schedule <SCHEDULE NAME> --schedule="@every 6h"
# 每日对 web namespace 进行一次备份 # 每日对 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>`。 >定时备份的名称为:`<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 ...@@ -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 添加标签 # 为 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: ...@@ -221,8 +265,8 @@ spec:
serviceAccountName: velero serviceAccountName: velero
containers: containers:
- name: velero - name: velero
# sync from gcr.io/heptio-images/velero:latest # sync from velero/velero:v1.5.2
image: registry-vpc.cn-shanghai.aliyuncs.com/keking/velero:latest # 修复时区后的镜像 image: registry.cn-hangzhou.aliyuncs.com/irybd-package/velero:v1.5.2 # 修复时区后的镜像
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
command: command:
- /velero - /velero
......
...@@ -17,11 +17,9 @@ import ( ...@@ -17,11 +17,9 @@ import (
"io" "io"
"os" "os"
"time" "time"
"github.com/aliyun/aliyun-oss-go-sdk/oss" "github.com/aliyun/aliyun-oss-go-sdk/oss"
"github.com/pkg/errors" "github.com/pkg/errors"
"github.com/sirupsen/logrus" "github.com/sirupsen/logrus"
"archive/tar" "archive/tar"
"bufio" "bufio"
"bytes" "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