Velero 是一个开源工具,可以安全地备份和还原,执行灾难恢复以及迁移 Kubernetes 集群资源和持久卷。
Velero 可以在基础架构丢失,数据损坏和/或服务中断的情况下,减少恢复时间。
Velero 通过轻松地将 Kubernetes 资源从一个集群迁移到另一个集群来实现集群可移植性
提供关键数据保护功能,例如定时计划的备份,保留计划以及自定义操作的备份前或备份后钩子。
使用 namespace resources 或 label selector 备份整个集群或部分集群的 Kubernetes 资源和卷。
设置计划以定期间隔自动启动备份。
配置备份前和备份后钩子,以在 Velero 备份之前和之后执行自定义操作。
kubectl
本地安装Velero 使用对象存储来存储备份和关联的工件。 它还可以选择与受支持的块存储系统集成,以对您的持久卷进行快照。 在开始安装过程之前,您应该从 兼容的提供程序列表 中识别将要使用的对象存储提供程序和可选的块存储提供程序。
Velero 支持云提供商环境和本地环境的存储提供商。 有关内部部署方案的更多详细信息,请参见 内部部署文档
tar -xvf <RELEASE-TARBALL-NAME>.tar.gz
velero
放到$PATH
(一般是/usr/local/bin
)有两种支持的方法来安装 Velero 服务器组件:
velero install
CLI 命令Velero 使用存储提供程序插件与各种存储系统集成,以支持备份和快照操作。 安装和配置 Velero 服务器组件以及相应插件的步骤特定于您选择的存储提供商。 要查找您选择的存储提供商的安装说明,请在 支持的存储提供商 页面上访问提供商的文档链接。
📝 注意:
如果您的对象存储提供程序与卷快照提供程序不同,请首先按照对象存储提供程序的安装说明进行操作,然后返回此处并按照说明添加 卷快照提供程序。
https://velero.io/docs/v1.8/customize-installation/#enabling-shell-autocompletion
https://velero.io/docs/v1.8/customize-installation/
Velero 支持各种存储提供程序,以进行不同的备份和快照操作。 Velero 有一个插件系统,它允许任何人在不修改 Velero 代码库的情况下增加对其他备份和卷存储平台的兼容性。
提供商 | 对象存储 | 卷快照 | 插件提供商 Repo | 安装说明 |
---|---|---|---|---|
Amazon Web Services (AWS) | AWS S3 | AWS EBS | Velero plugin for AWS | AWS Plugin Setup |
Google Cloud Platform (GCP) | Google Cloud Storage | Google Compute Engine Disks | Velero plugin for GCP | GCP Plugin Setup |
Microsoft Azure | Azure Blob Storage | Azure Managed Disks | Velero plugin for Microsoft Azure | Azure Plugin Setup |
VMware vSphere | 🚫 | vSphere Volumes | VMware vSphere | vSphere Plugin Setup |
Container Storage Interface (CSI) | 🚫 | CSI Volumes | Velero plugin for CSI | CSI Plugin Setup |
Provider | Object Store | Volume Snapshotter | Plugin Documentation | Contact |
---|---|---|---|---|
AlibabaCloud | Alibaba Cloud OSS | Alibaba Cloud | AlibabaCloud | GitHub Issue |
DigitalOcean | DigitalOcean Object Storage | DigitalOcean Volumes Block Storage | StackPointCloud | |
Hewlett Packard | 🚫 | HPE Storage | Hewlett Packard | Slack, GitHub Issue |
OpenEBS | 🚫 | OpenEBS CStor Volume | OpenEBS | Slack, GitHub Issue |
OpenStack | Swift | Cinder | OpenStack | GitHub Issue |
Portworx | 🚫 | Portworx Volume | Portworx | Slack, GitHub Issue |
Storj | Storj Object Storage | 🚫 | Storj | GitHub Issue |
Velero 的 AWS Object Store 插件使用 Amazon 的 Go SDK 连接到 AWS S3 API。 一些第三方存储提供程序也支持 S3 API,并且用户报告了以下提供程序可用于 Velero:
📝 请注意,Velero 团队并未定期测试这些存储提供商。
某些存储提供程序(例如 Quobyte)可能需要不同的签名算法版本。
在您的本地目录中创建特定于 Velero 的凭证文件(credentials-velero
):
[default]
aws_access_key_id = minio
aws_secret_access_key = minio123
启动服务器和存储服务。 在 Velero 目录中,运行:
oc apply -f examples/minio/00-minio-deployment.yaml
velero install \
--provider aws \
--plugins velero/velero-plugin-for-aws:v1.4.1 \
--bucket velero \
--secret-file ./credentials-velero \
--use-volume-snapshots=false \
--backup-location-config region=minio,s3ForcePathStyle="true",s3Url=http://minio.velero.svc:9000
此示例假定它在本地群集中运行,而没有能够提供快照的卷提供程序,因此不会创建 VolumeSnapshotLocation(``--use-volume-snapshots=false`)。
此外,您可以指定--use-restic
启用 RESTIC 支持,并指定--wait
等待部署准备就绪。
对于更复杂的安装需求,请使用 Helm Chart,或添加--dry-run -o yaml
选项来生成安装的 YAML 文件。
创建的内容包括:
CustomResourceDefinition/backups.velero.io: attempting to create resource
CustomResourceDefinition/backups.velero.io: created
CustomResourceDefinition/backupstoragelocations.velero.io: attempting to create resource
CustomResourceDefinition/backupstoragelocations.velero.io: created
CustomResourceDefinition/deletebackuprequests.velero.io: attempting to create resource
CustomResourceDefinition/deletebackuprequests.velero.io: created
CustomResourceDefinition/downloadrequests.velero.io: attempting to create resource
CustomResourceDefinition/downloadrequests.velero.io: created
CustomResourceDefinition/podvolumebackups.velero.io: attempting to create resource
CustomResourceDefinition/podvolumebackups.velero.io: created
CustomResourceDefinition/podvolumerestores.velero.io: attempting to create resource
CustomResourceDefinition/podvolumerestores.velero.io: created
CustomResourceDefinition/resticrepositories.velero.io: attempting to create resource
CustomResourceDefinition/resticrepositories.velero.io: created
CustomResourceDefinition/restores.velero.io: attempting to create resource
CustomResourceDefinition/restores.velero.io: created
CustomResourceDefinition/schedules.velero.io: attempting to create resource
CustomResourceDefinition/schedules.velero.io: created
CustomResourceDefinition/serverstatusrequests.velero.io: attempting to create resource
CustomResourceDefinition/serverstatusrequests.velero.io: created
CustomResourceDefinition/volumesnapshotlocations.velero.io: attempting to create resource
CustomResourceDefinition/volumesnapshotlocations.velero.io: created
Waiting for resources to be ready in cluster...
Namespace/velero: attempting to create resource
Namespace/velero: already exists, proceeding
Namespace/velero: created
ClusterRoleBinding/velero: attempting to create resource
ClusterRoleBinding/velero: created
ServiceAccount/velero: attempting to create resource
ServiceAccount/velero: created
Secret/cloud-credentials: attempting to create resource
Secret/cloud-credentials: created
BackupStorageLocation/default: attempting to create resource
BackupStorageLocation/default: created
Deployment/velero: attempting to create resource
Deployment/velero: created
Velero is installed! ⛵ Use 'kubectl logs deployment/velero -n velero' to view the status.
为与app=iperf3-server
label selector 匹配的任何对象创建备份:
velero backup create test-backup --selector app=iperf3-server
或者,如果要备份除匹配标签backup=ignore
的对象以外的所有对象,请执行以下操作:
velero backup create nginx-backup --selector 'backup!=ignore'
(可选)使用app=iperf3-server
label selector 基于 cron 表达式创建定期计划的备份:
velero schedule create test-daily --schedule="0 1 * * *" --selector app=iperf3-server
另外,您可以使用一些非标准的速记 cron 表达式:
velero schedule create test-daily --schedule="@every 24h" --selector app=iperf3-server
有关更多用法示例,请参见 cron 软件包 的文档。
运行:
velero restore create --from-backup test-backup
运行:
velero restore get
恢复完成后,输出如下所示:
NAME BACKUP STATUS WARNINGS ERRORS CREATED SELECTOR
nginx-backup-20170727200524 nginx-backup Completed 0 0 2017-07-27 20:05:24 +0000 UTC <none>
如果有错误或警告,则可以详细查看它们:
velero restore describe <RESTORE_NAME>
如果要删除创建的所有备份,包括对象存储中的数据和永久卷快照,则可以运行:
velero backup delete BACKUP_NAME
这要求 Velero 服务器删除与BACKUP_NAME
相关联的所有备份数据。 您需要对要永久删除的每个备份执行此操作。 Velero 的未来版本将允许您通过名称或 label selector 删除多个备份。
要从 Kubernetes 集群中完全卸载 Velero:
oc delete namespace/velero clusterrolebinding/velero
oc delete crds -l component=velero
Velero 支持使用称为 restic 的免费开源备份工具备份和还原 Kubernetes 卷。 此支持被视为 Beta 质量。 请查看 限制 列表,以了解它是否适合您的用例。
添加了 Restic 集成,为您提供了一个现成的解决方案,用于备份和还原几乎任何类型的 Kubernetes 卷。 这种集成是 Velero 功能的补充,而不是现有功能的替代。 但是,如果您需要为存储平台使用卷快照插件,或者使用的是 EFS,AzureFile,NFS,emptyDir,local 或任何其他没有本机快照概念的卷类型,restic 可能适合您 。
Restic 并不局限于特定的存储平台,这意味着该集成还为将来实现跨卷类型数据迁移的工作铺平了道路。
🐾 注意:
不支持 hostPath 卷,但是支持 本地卷类型。
了解 Velero 如何 通过 Restic 集成执行备份。
下载 最新的 Velero 版本。
Kubernetes v1.10.0 及更高版本。 Velero 的 Restic 集成需要 Kubernetes MountPropagation 功能,该功能在 Kubernetes v1.10.0 和更高版本中默认启用。
要安装 restic,请使用velero install
命令中的--use-restic
标志。 有关安装命令的其他标志的更多详细信息,请参见 安装概述。
velero install --use-restic
在不支持快照的 Velero 支持的存储提供程序上使用 Restic 时,--use-volume-snapshots = false
标志可防止在安装时创建未使用的VolumeSnapshotLocation
。
安装后,某些基于 Kubernetes 的 PaaS / CaaS 平台也需要修改 Restic DaemonSet 规范。 仅当您在 RancherOS,OpenShift,VMware Tanzu Kubernetes Grid Integrated Edition(以前称为 VMware Enterprise PKS)或 Micrsoft Azure 上安装时,才需要本节中的步骤。
要将正确的主机路径安装到 Pod 卷,请在privileged
模式下运行 Restic Pod。
将velero
ServiceAccount 添加到privileged
SCC:
$ oc adm policy add-scc-to-user privileged -z velero -n velero
对于 OpenShift 版本> = 4.1,修改 DaemonSet yaml 以请求privileged
模式:
@@ -67,3 +67,5 @@ spec:
value: /credentials/cloud
- name: VELERO_SCRATCH_DIR
value: /scratch
+ securityContext:
+ privileged: true
或:
oc patch ds/restic \
--namespace velero \
--type json \
-p '[{"op":"add","path":"/spec/template/spec/containers/0/securityContext","value": { "privileged": true}}]'
如果 restic 不在特权模式下运行,则由于主机系统级别配置了默认的强制实施 SELinux 模式,它将无法访问已挂载的 hostpath 目录内的 pod 卷。 您可以 创建自定义 SCC 来放松群集中的安全性,以便允许 Restic Pod 使用 hostPath 卷插件,而无需授予它们访问privileged
SCC 的权限。
默认情况下,用户维度的 openshift 名称空间不会在集群中的所有节点上调度 Pod。
要在所有节点上计划名称空间,需要一个注释:
oc annotate namespace <velero namespace> openshift.io/node-selector=""
这应该在安装 velero 之前完成。
或需要删除并重新创建 ds:
oc get ds restic -o yaml -n <velero namespace> > ds.yaml
oc annotate namespace <velero namespace> openshift.io/node-selector=""
oc create -n <velero namespace> -f ds.yaml
Velero 支持发现需要使用 Restic 备份的 Pod 卷的两种方法:
选择性启用方式:每个包含要使用 Restic 备份的卷的 Pod 都必须标有卷的名称。
选择性退出方式:使用 Restic 备份所有 Pod 卷,并具有退出任何不应备份的卷的功能。
以下各节提供了有关这两种方法的更多详细信息。
在这种方法中,Velero 将使用 restic 备份所有 pod 卷,但以下情况除外:
使用 pod 上的backup.velero.io/backup-volumes-excludes
注释可以排除卷不被备份的情况。
使用此方法进行备份的说明如下:
在包含不应使用 Restic 备份的卷的每个 Pod 上运行以下命令
kubectl -n YOUR_POD_NAMESPACE annotate pod/YOUR_POD_NAME backup.velero.io/backup-volumes-excludes=YOUR_VOLUME_NAME_1,YOUR_VOLUME_NAME_2,...
其中,卷名是容器规范中卷的名称。
例如,在以下 pod 中:
apiVersion: v1
kind: Pod
metadata:
name: app1
namespace: sample
spec:
containers:
- image: k8s.gcr.io/test-webserver
name: test-webserver
volumeMounts:
- name: pvc1-vm
mountPath: /volume-1
- name: pvc2-vm
mountPath: /volume-2
volumes:
- name: pvc1-vm
persistentVolumeClaim:
claimName: pvc1
- name: pvc2-vm
claimName: pvc2
要排除卷pvc1-vm
的 Restic 备份,应运行:
kubectl -n sample annotate pod/app1 backup.velero.io/backup-volumes-excludes=pvc1-vm
进行 Velero 备份:
velero backup create BACKUP_NAME --default-volumes-to-restic OTHER_OPTIONS
以上步骤在每个备份的基础上使用了选择性退出方法。
或者,可以在运行带有--default-volumes-to-restic
标志的velero install
命令的所有 velero 备份上启用此行为。 有关详细信息,请参阅 安装概述。
备份完成后,查看有关备份的信息:
velero backup describe YOUR_BACKUP_NAME
kubectl -n velero get podvolumebackups -l velero.io/backup-name=YOUR_BACKUP_NAME -o yaml
默认情况下,Velero 使用这种方法来发现需要使用 Restic 备份的 Pod 卷,其中每个包含要使用 Restic 备份的卷的 Pod 都必须标有该卷的名称。
使用此方法进行备份的说明如下:
对包含要备份的卷的每个 Pod 运行以下命令:
kubectl -n YOUR_POD_NAMESPACE annotate pod/YOUR_POD_NAME backup.velero.io/backup-volumes=YOUR_VOLUME_NAME_1,YOUR_VOLUME_NAME_2,...
其中,卷名是容器 spec 中卷的名称。
例如,对于以下 pod:
apiVersion: v1
kind: Pod
metadata:
name: sample
namespace: foo
spec:
containers:
- image: k8s.gcr.io/test-webserver
name: test-webserver
volumeMounts:
- name: pvc-volume
mountPath: /volume-1
- name: emptydir-volume
mountPath: /volume-2
volumes:
- name: pvc-volume
persistentVolumeClaim:
claimName: test-volume-claim
- name: emptydir-volume
emptyDir: {}
你应该运行:
kubectl -n foo annotate pod/sample backup.velero.io/backup-volumes=pvc-volume,emptydir-volume
如果您使用控制器来管理您的 pods,则也可以在 pod template spec 中提供此批注。
做一个 Velero 备份
velero backup create NAME OPTIONS...
备份完成后,查看有关备份的信息:
velero backup describe YOUR_BACKUP_NAME
kubectl -n velero get podvolumebackups -l velero.io/backup-name=YOUR_BACKUP_NAME -o yaml
无论如何使用 Restic 发现卷以进行备份,还原过程均保持不变。
从 Velero 备份中还原:
velero restore create --from-backup BACKUP_NAME OPTIONS...
还原完成后,查看有关 Pod 卷还原的信息:
velero restore describe YOUR_RESTORE_NAME
kubectl -n velero get podvolumerestores -l velero.io/restore-name=YOUR_RESTORE_NAME -o yaml
hostPath
卷。 支持 本地持久卷。emptyDir
卷),当删除/重新创建 pod(例如,通过 ReplicaSet / Deployment)时,这些卷的下一次备份将是完整的而不是增量的,因为 pod 卷的是 假定生命周期由其 pod 定义。Velero 在执行 Restic 还原时使用辅助初始化容器。 默认情况下,此容器的镜像是velero/velero-restic-restore-helper:<VERSION>
,其中VERSION
与主 Velero 镜像的版本/标签匹配。 您可以通过在 Velero 命名空间中创建带有备用镜像的 ConfigMap,来定制用于此帮助程序的镜像。
ConfigMap 必须如下所示:
apiVersion: v1
kind: ConfigMap
metadata:
# any name can be used; Velero uses the labels (below)
# to identify it rather than the name
name: restic-restore-action-config
# must be in the velero namespace
namespace: velero
# the below labels should be used verbatim in your
# ConfigMap.
labels:
# this value-less label identifies the ConfigMap as
# config for a plugin (i.e. the built-in restic restore
# item action plugin)
velero.io/plugin-config: ""
# this label identifies the name and kind of plugin
# that this ConfigMap is for.
velero.io/restic: RestoreItemAction
data:
# The value for "image" can either include a tag or not;
# if the tag is *not* included, the tag from the main Velero
# image will automatically be used.
image: myregistry.io/my-custom-helper-image[:OPTIONAL_TAG]
# "cpuRequest" sets the request.cpu value on the restic init containers during restore.
# If not set, it will default to "100m". A value of "0" is treated as unbounded.
cpuRequest: 200m
# "memRequest" sets the request.memory value on the restic init containers during restore.
# If not set, it will default to "128Mi". A value of "0" is treated as unbounded.
memRequest: 128Mi
# "cpuLimit" sets the request.cpu value on the restic init containers during restore.
# If not set, it will default to "100m". A value of "0" is treated as unbounded.
cpuLimit: 200m
# "memLimit" sets the request.memory value on the restic init containers during restore.
# If not set, it will default to "128Mi". A value of "0" is treated as unbounded.
memLimit: 128Mi
# "secCtxRunAsUser sets the securityContext.runAsUser value on the restic init containers during restore."
secCtxRunAsUser: 1001
# "secCtxRunAsGroup sets the securityContext.runAsGroup value on the restic init containers during restore."
secCtxRunAsGroup: 999
Velero 具有三个自定义资源定义和关联的控制器:
ResticRepository
- 代表/管理 Velero Restic 储存库 的生命周期。 当请求第一个名称空间的 Restic 备份时,Velero 将为每个名称空间创建一个 Restic 存储库。 此自定义资源的控制器执行 restic 存储库生命周期命令– restic init
,restic check
和restic prune
。
您可以通过运行velero restic repo get
来查看有关 Velero Restic 存储库的信息。
PodVolumeBackup
- 表示容器中卷的静态备份。当找到带注释的 pod 时,主要的 Velero 备份过程会创建一个或多个PodVolumeBackup
。群集中的每个节点都为此资源(在 daemonset 中)运行一个控制器,该控制器处理该节点上的 Pod 的PodVolumeBackups
。 控制器执行restic backup
命令以备份 pod 卷数据。
PodVolumeRestore
- 表示 pod volume 的恢复。 当遇到具有关联的 Restic 备份的 Pod 时,主要的 Velero 还原过程会创建其中的一个或多个PodVolumeRestore
。 群集中的每个节点都为此资源运行一个控制器(在与上述相同的 daemonset 中),该控制器处理该节点上的 Pod 的PodVolumeRestores
。 控制器执行restic restore
命令以还原 Pod 卷数据。
ResticRepository
自定义资源是否已经存在ResticRepository
控制器进行初始化/检查。PodVolumeBackup
自定义资源。PodVolumeBackup
资源完成或失败PodVolumeBackup
由相应节点上的控制器处理:
/var/lib/kubelet/pods
的 hostPath 卷挂载以访问 Pod 卷数据restic backup
PodVolumeBackup
完成时,主 Velero 进程会将其添加到名为<backup-name>-podvolumebackups.json.gz
的文件中的 Velero 备份中。 该文件与备份 tarball 一起上传到对象存储。 它将用于还原,如下一节所述。Velero 的主要还原过程将检查集群中每个要备份的现有PodVolumeBackup
自定义资源。
对于找到的每个PodVolumeBackup
,Velero 首先通过以下方法确保该 pod 的命名空间存在一个 Restic 存储库:
ResticRepository
自定义资源是否已经存在ResticRepository
控制器初始化/检查它(请注意,在这种情况下,实际的仓库应该已经存在于对象存储中,因此 Velero 控制器将只对其进行完整性检查)Velero 将一个初始化容器添加到了 pod 中,该容器的工作是等待所有还原恢复以完成容器(稍后会详细介绍)
Velero 通过将其提交到 Kubernetes API 来创建具有添加的 init container 的 pod
Velero 为要在被还原的每个 Pod 中创建PodVolumeRestore
自定义资源
现在,主要的 Velero 进程等待每个PodVolumeRestore
资源完成或失败
同时,每个PodVolumeRestore
由相应节点上的控制器处理:
具有/var/lib/kubelet/pods
的 hostPath 卷挂载以访问 Pod 卷数据
等待 pod 运行 init 容器
在上述卷中找到 pod 卷的子目录
运行restic restore
成功后,将文件写入 Pod 卷中的.velero
子目录中,该文件的名称是此 Pod 卷还原用于的 Velero 还原的 UID。
将自定义资源的状态更新为“Completed”或“Failed”
添加到 Pod 的 init 容器正在运行一个过程,该过程一直等到它在每个已还原卷中的.velero
下找到一个文件,其名称是正在运行的 Velero 还原的 UID
找到所有此类文件后,初始化容器的过程将成功终止,并且 pod 将继续运行其他初始化容器/主容器。
Velero 没有提供一种机制来检测缺少 restic 备份注释的持久卷声明。
为了解决这个问题,Thomann Bits&Beats 编写了一个控制器:velero-pvc-watcher
使用 Backups 和 Restores
只要您将每个 Velero 实例指向相同的云对象存储位置,Velero 就能帮助您将资源从一个群集移植到另一个群集。 此方案假定您的群集由同一云提供商托管。 请注意,Velero 本身不支持跨云提供程序迁移持久卷快照。 如果要在云平台之间迁移卷数据,请启用 restic,它将在文件系统级别备份卷内容。
(集群 1)假设您尚未使用 Velero schedule
操作对数据进行检查点检查,则需要首先备份整个群集(根据需要替换<BACKUP-NAME>
):
velero backup create <BACKUP-NAME>
默认备份保留期限以 TTL(有效期)表示,为 30 天(720 小时); 您可以使用--ttl <DURATION>
标志根据需要进行更改。 有关备份到期的更多信息,请参见 velero 的工作原理。
(集群 2)配置BackupStorageLocations
和VolumeSnapshotLocations
, 指向 集群 1 使用的位置,使用velero backup-location create
和velero snapshot-location create
. 确保配置BackupStorageLocations
为 read-only 通过在velero backup-location create
时使用--access-mode=ReadOnly
flag
(集群 2)确保已创建 Velero Backup 对象。 Velero 资源与云存储中的备份文件同步。
velero backup describe <BACKUP-NAME>
注意:默认同步间隔为 1 分钟,因此请确保在检查之前等待。 您可以使用 Velero 服务器的--backup-sync-period
标志配置此间隔。
(集群 2)一旦确认现在存在正确的备份(<BACKUP-NAME>
),就可以使用以下方法还原所有内容:
velero restore create --from-backup <BACKUP-NAME>
检查第二个群集是否按预期运行:
(集群 2) 运行:
velero restore get
然后运行:
velero restore describe <RESTORE-NAME-FROM-GET-COMMAND>
如果遇到问题,请确保 Velero 在两个群集中的相同 namespace 中运行。
按 namespace、类型或标签筛选对象。
当不使用任何筛选选项时,Velero 会将所有对象包括在备份或还原中。
仅包括特定资源,不包括所有其他资源。
如果同时包含通配符和特定资源,则通配符优先。
–include-namespaces
备份 namespace 及其对象。
velero backup create <backup-name> --include-namespaces <namespace>
恢复两个 namespace 及其对象。
velero restore create <backup-name> --include-namespaces <namespace1>,<namespace2>
–include-resources
备份集群中的所有 deployments:
velero backup create <backup-name> --include-resources deployments
恢复集群中的所有 deployments 和 configmaps。
velero restore create <backup-name> --include-resources deployments,configmaps
在 namespace 中备份 deployments。
velero backup create <backup-name> --include-resources deployments --include-namespaces <namespace>
–include-cluster-resources
此选项可以具有三个可能的值:
true
: 包括所有群集范围的资源。
false
: 不包括群集范围的资源。
nil
("auto"或不提供):
true
。false
--include-cluster-resources = false
,否则如果由自定义操作(例如,PVC-> PV)触发某些相关的群集作用域资源,则可能仍会进行备份/还原。备份整个群集,包括群集范围内的资源。
velero backup create <backup-name>
仅还原群集中的命名空间资源。
velero restore create <backup-name> --include-cluster-resources=false
备份 namespace 并包括群集范围的资源。
velero backup create <backup-name> --include-namespaces <namespace> --include-cluster-resources=true
–selector
包括与 label selector 匹配的资源。
velero backup create <backup-name> --selector <key>=<value>
从备份中排除特定资源。
通配符排除将被忽略。
–exclude-namespaces
Exclude kube-system
from the cluster backup.
velero backup create <backup-name> --exclude-namespaces kube-system
还原期间排除两个 namespace。
velero restore create <backup-name> --exclude-namespaces <namespace1>,<namespace2>
–exclude-resources
从备份中排除 secrets:
velero backup create <backup-name> --exclude-resources secrets
排除 secrets 和 rolebindings:
velero backup create <backup-name> --exclude-resources secrets,rolebindings
velero.io/exclude-from-backup=true
标签为velero.io/exclude-from-backup=true
的资源不包括在备份中,即使它包含匹配的选择器标签也是如此。
三人行, 必有我师; 知识共享, 天下为公. 本文由东风微鸣技术博客 EWhisper.cn 编写.