5.10. 使用 GCP 配置 OADP
5.10.1. 配置 OpenShift API 以进行 Google Cloud Platform 的数据保护 复制链接链接已复制到粘贴板!
您可以通过安装 OADP Operator,使用 Google Cloud Platform (GCP) 安装 OpenShift API for Data Protection (OADP)。Operator 安装 Velero 1.16。
从 OADP 1.0.4 开始,所有 OADP 1.0.z 版本只能用作 Migration Toolkit for Containers Operator 的依赖项,且不能作为独立 Operator 提供。
您可以为 Velero 配置 GCP,创建一个默认 Secret,然后安装数据保护应用程序。如需了解更多详细信息,请参阅安装 OADP Operator。
要在受限网络环境中安装 OADP Operator,您必须首先禁用默认软件目录源并镜像 Operator 目录。详情请参阅在断开连接的环境中使用 Operator Lifecycle Manager。
5.10.1.1. 配置 Google Cloud Platform 复制链接链接已复制到粘贴板!
对于数据保护(OADP),您可以为 OpenShift API 配置 Google Cloud Platform(GCP)。
先决条件
-
您必须安装了
gcloud和gsutilCLI 工具。详情请查看 Google 云文档。
流程
登录到 GCP:
gcloud auth login
$ gcloud auth loginCopy to Clipboard Copied! Toggle word wrap Toggle overflow 设置
BUCKET变量:BUCKET=<bucket>
$ BUCKET=<bucket>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定存储桶名称。
创建存储桶:
gsutil mb gs://$BUCKET/
$ gsutil mb gs://$BUCKET/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
PROJECT_ID变量设置为您的活跃项目:PROJECT_ID=$(gcloud config get-value project)
$ PROJECT_ID=$(gcloud config get-value project)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建服务帐户:
gcloud iam service-accounts create velero \ --display-name "Velero service account"$ gcloud iam service-accounts create velero \ --display-name "Velero service account"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出服务帐户:
gcloud iam service-accounts list
$ gcloud iam service-accounts listCopy to Clipboard Copied! Toggle word wrap Toggle overflow 设置
SERVICE_ACCOUNT_EMAIL变量,使其与email值匹配:SERVICE_ACCOUNT_EMAIL=$(gcloud iam service-accounts list \ --filter="displayName:Velero service account" \ --format 'value(email)')$ SERVICE_ACCOUNT_EMAIL=$(gcloud iam service-accounts list \ --filter="displayName:Velero service account" \ --format 'value(email)')Copy to Clipboard Copied! Toggle word wrap Toggle overflow 附加策略,为
velero用户提供所需的最低权限:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
velero.server自定义角色:gcloud iam roles create velero.server \ --project $PROJECT_ID \ --title "Velero Server" \ --permissions "$(IFS=","; echo "${ROLE_PERMISSIONS[*]}")"$ gcloud iam roles create velero.server \ --project $PROJECT_ID \ --title "Velero Server" \ --permissions "$(IFS=","; echo "${ROLE_PERMISSIONS[*]}")"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为项目添加 IAM 策略绑定:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$SERVICE_ACCOUNT_EMAIL \ --role projects/$PROJECT_ID/roles/velero.server$ gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$SERVICE_ACCOUNT_EMAIL \ --role projects/$PROJECT_ID/roles/velero.serverCopy to Clipboard Copied! Toggle word wrap Toggle overflow 更新 IAM 服务帐户:
gsutil iam ch serviceAccount:$SERVICE_ACCOUNT_EMAIL:objectAdmin gs://${BUCKET}$ gsutil iam ch serviceAccount:$SERVICE_ACCOUNT_EMAIL:objectAdmin gs://${BUCKET}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 IAM 服务帐户的密钥保存到当前目录中的
credentials-velero文件中:gcloud iam service-accounts keys create credentials-velero \ --iam-account $SERVICE_ACCOUNT_EMAIL$ gcloud iam service-accounts keys create credentials-velero \ --iam-account $SERVICE_ACCOUNT_EMAILCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在安装 Data Protection Application 前,您可以使用
credentials-velero文件为 GCP 创建Secret对象。
5.10.1.2. 关于备份和恢复位置及其 secret 复制链接链接已复制到粘贴板!
您可以在 DataProtectionApplication 自定义资源(CR)中指定备份和快照位置及其 secret。
5.10.1.2.1. 备份位置 复制链接链接已复制到粘贴板!
您可以将以下 AWS S3 兼容对象存储解决方案之一指定为备份位置:
- 多云对象网关 (MCG)
- Red Hat Container Storage
- Ceph RADOS 网关;也称为 Ceph 对象网关
- Red Hat OpenShift Data Foundation
- MinIO
Velero 将 OpenShift Container Platform 资源、Kubernetes 对象和内部镜像备份为对象存储上的存档文件。
5.10.1.2.2. 快照位置 复制链接链接已复制到粘贴板!
如果使用云供应商的原生快照 API 备份持久性卷,您必须将云供应商指定为快照位置。
如果使用 Container Storage Interface(CSI)快照,则不需要指定快照位置,因为您要创建一个 VolumeSnapshotClass CR 来注册 CSI 驱动程序。
如果您使用文件系统备份 (FSB),则不需要指定快照位置,因为 FSB 在对象存储上备份文件系统。
5.10.1.2.3. Secrets 复制链接链接已复制到粘贴板!
如果备份和快照位置使用相同的凭证,或者不需要快照位置,请创建一个默认 Secret。
如果备份和恢复位置使用不同的凭证,您可以创建两个 secret 对象:
-
您在
DataProtectionApplicationCR 中指定的备份位置的自定义Secret。 -
快照位置的默认
Secret,在DataProtectionApplicationCR 中没有引用。
数据保护应用程序需要一个默认的 Secret。否则,安装将失败。
如果您不想在安装过程中指定备份或快照位置,您可以使用空 credentials-velero 文件创建默认 Secret。
5.10.1.2.4. 创建默认 Secret 复制链接链接已复制到粘贴板!
如果您的备份和快照位置使用相同的凭证,或者不需要快照位置,则创建一个默认 Secret。
Secret 的默认名称为 cloud-credentials-gcp。
DataProtectionApplication 自定义资源(CR)需要一个默认的 Secret。否则,安装将失败。如果没有指定备份位置 Secret 的名称,则会使用默认名称。
如果您不想在安装过程中使用备份位置凭证,您可以使用空 credentials-velero 文件创建带有默认名称的 Secret。
先决条件
- 您的对象存储和云存储(若有)必须使用相同的凭证。
- 您必须为 Velero 配置对象存储。
流程
-
为您的云供应商为备份存储位置创建一个
credentials-velero文件。 使用默认名称创建
Secret自定义资源 (CR):oc create secret generic cloud-credentials-gcp -n openshift-adp --from-file cloud=credentials-velero
$ oc create secret generic cloud-credentials-gcp -n openshift-adp --from-file cloud=credentials-veleroCopy to Clipboard Copied! Toggle word wrap Toggle overflow
在安装 Data Protection Application 时,secret 会在 DataProtectionApplication CR 的 spec.backupLocations.credential 块中引用。
5.10.1.2.5. 为不同凭证创建 secret 复制链接链接已复制到粘贴板!
如果您的备份和恢复位置使用不同的凭证,您必须创建两个 Secret 对象:
-
具有自定义名称的备份位置
Secret。自定义名称在DataProtectionApplication自定义资源(CR)的spec.backupLocations块中指定。 -
带有默认名称
cloud-credentials-gcp的快照位置Secret。此Secret不在DataProtectionApplicationCR 中指定。
流程
-
为您的云供应商为快照位置创建一个
credentials-velero文件。 使用默认名称为快照位置创建
Secret:oc create secret generic cloud-credentials-gcp -n openshift-adp --from-file cloud=credentials-velero
$ oc create secret generic cloud-credentials-gcp -n openshift-adp --from-file cloud=credentials-veleroCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
为您的对象存储创建一个用于备份位置的
credentials-velero文件。 使用自定义名称为备份位置创建
Secret:oc create secret generic <custom_secret> -n openshift-adp --from-file cloud=credentials-velero
$ oc create secret generic <custom_secret> -n openshift-adp --from-file cloud=credentials-veleroCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将带有自定义名称的
Secret添加到DataProtectionApplicationCR 中,如下例所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 具有自定义名称的备份位置
Secret。
5.10.1.3. 配置数据保护应用程序 复制链接链接已复制到粘贴板!
您可以通过设置 Velero 资源分配或启用自签名 CA 证书来配置数据保护应用程序。
5.10.1.3.1. 设置 Velero CPU 和内存分配 复制链接链接已复制到粘贴板!
您可以通过编辑 DataProtectionApplication 自定义资源(CR)清单来为 Velero pod 设置 CPU 和内存分配。
先决条件
- 您必须安装了 OpenShift API for Data Protection(OADP)Operator。
流程
编辑
DataProtectionApplicationCR 清单的spec.configuration.velero.podConfig.ResourceAllocations块中的值,如下例所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意Kopia 是 OADP 1.3 及之后的版本中的一个选项。您可以使用 Kopia 进行文件系统备份,Kopia 是 Data Mover 的唯一选择,并带有内置数据 Mover。
和 Restic 相比,Kopia 需要更多资源,您可能需要相应地调整 CPU 和内存要求。
使用 nodeSelector 字段选择哪些节点可以运行节点代理。nodeSelector 字段是节点选择限制的最简单的形式。任何指定的标签都需要与每个节点上的标签匹配。
如需了解更多详细信息,请参阅配置节点代理和节点标签。
5.10.1.3.2. 启用自签名 CA 证书 复制链接链接已复制到粘贴板!
您必须通过编辑 DataProtectionApplication 自定义资源(CR)清单来为对象存储启用自签名 CA 证书,以防止由未知颁发机构签名的证书。
先决条件
- 您必须安装了 OpenShift API for Data Protection(OADP)Operator。
流程
编辑
DataProtectionApplicationCR 清单的spec.backupLocations.velero.objectStorage.caCert参数和spec.backupLocations.velero.config参数:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.10.1.3.2.1. 使用带有用于 velero 部署的 velero 命令的 CA 证书 复制链接链接已复制到粘贴板!
如果您望使用 Velero CLI 而又不想在您的系统中安装它,可以为它创建一个别名。
先决条件
-
您必须使用具有
cluster-admin角色的用户登录到 OpenShift Container Platform 集群。 -
已安装 OpenShift CLI (
oc)。
流程
要使用别名的 Velero 命令,请运行以下命令:
alias velero='oc -n openshift-adp exec deployment/velero -c velero -it -- ./velero'
$ alias velero='oc -n openshift-adp exec deployment/velero -c velero -it -- ./velero'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令检查别名是否正常工作:
Example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要使用这个命令来使用 CA 证书,您可以运行以下命令在 Velero 部署中添加证书:
CA_CERT=$(oc -n openshift-adp get dataprotectionapplications.oadp.openshift.io <dpa-name> -o jsonpath='{.spec.backupLocations[0].velero.objectStorage.caCert}') [[ -n $CA_CERT ]] && echo "$CA_CERT" | base64 -d | oc exec -n openshift-adp -i deploy/velero -c velero -- bash -c "cat > /tmp/your-cacert.txt" || echo "DPA BSL has no caCert"$ CA_CERT=$(oc -n openshift-adp get dataprotectionapplications.oadp.openshift.io <dpa-name> -o jsonpath='{.spec.backupLocations[0].velero.objectStorage.caCert}') $ [[ -n $CA_CERT ]] && echo "$CA_CERT" | base64 -d | oc exec -n openshift-adp -i deploy/velero -c velero -- bash -c "cat > /tmp/your-cacert.txt" || echo "DPA BSL has no caCert"Copy to Clipboard Copied! Toggle word wrap Toggle overflow velero describe backup <backup_name> --details --cacert /tmp/<your_cacert>.txt
$ velero describe backup <backup_name> --details --cacert /tmp/<your_cacert>.txtCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要获取备份日志,请运行以下命令:
velero backup logs <backup_name> --cacert /tmp/<your_cacert.txt>
$ velero backup logs <backup_name> --cacert /tmp/<your_cacert.txt>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以使用这些日志来查看无法备份的资源的失败和警告。
-
如果 Velero pod 重启,
/tmp/your-cacert.txt文件会消失,您需要通过重新运行上一步中的命令来重新创建/tmp/your-cacert.txt文件。 您可以运行以下命令来检查
/tmp/your-cacert.txt文件是否存在(在存储它的文件位置中):oc exec -n openshift-adp -i deploy/velero -c velero -- bash -c "ls /tmp/your-cacert.txt"
$ oc exec -n openshift-adp -i deploy/velero -c velero -- bash -c "ls /tmp/your-cacert.txt" /tmp/your-cacert.txtCopy to Clipboard Copied! Toggle word wrap Toggle overflow
在以后的 OpenShift API for Data Protection (OADP) 发行版本中,我们计划将证书挂载到 Velero pod,以便不需要这一步。
5.10.1.4. Google 工作负载身份联邦云身份验证 复制链接链接已复制到粘贴板!
在 Google Cloud 外部运行的应用程序使用服务帐户密钥(如用户名和密码)来访问 Google Cloud 资源。如果没有正确管理,则这些服务帐户密钥可能会成为安全风险。
使用 Google 的工作负载身份联邦,您可以使用 Identity and Access Management (IAM)提供 IAM 角色,包括模拟服务帐户到外部身份的功能。这消除了与服务帐户密钥相关的维护和安全风险。
工作负载联邦处理加密和解密证书、提取用户属性和验证。身份联邦对身份验证进行外部化,将其传递给安全令牌服务 (STS),并减少对各个开发人员的需求。授权和控制对资源的访问保持应用的职责。
Google 工作负载身份联邦可用于 OADP 1.3.x 及更新的版本。
在备份卷时,使用 Google 工作负载身份联邦身份验证的 GCP 上 OADP 仅支持 CSI 快照。
在带有 Google 工作负载身份联邦身份验证的 GCP 上的 OADP 不支持卷快照位置 (VSL) 备份。如需了解更多详细信息,请参阅 Google 工作负载身份联邦已知问题。
如果不使用 Google 工作负载身份联邦云身份验证,请继续安装数据保护应用程序。
先决条件
- 您已以手动模式安装集群,并配置了 GCP Workload Identity。
-
您可以访问 Cloud Credential Operator 实用程序 (
ccoctl) 以及关联的工作负载身份池。
流程
运行以下命令,创建一个
oadp-credrequest目录:mkdir -p oadp-credrequest
$ mkdir -p oadp-credrequestCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
CredentialsRequest.yaml文件,如下所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,使用
ccoctl实用程序处理oadp-credrequest目录中的CredentialsRequest对象:Copy to Clipboard Copied! Toggle word wrap Toggle overflow manifests/openshift-adp-cloud-credentials-gcp-credentials.yaml文件现在可用于以下步骤。运行以下命令来创建命名空间:
oc create namespace <OPERATOR_INSTALL_NS>
$ oc create namespace <OPERATOR_INSTALL_NS>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,将凭证应用到命名空间:
oc apply -f manifests/openshift-adp-cloud-credentials-gcp-credentials.yaml
$ oc apply -f manifests/openshift-adp-cloud-credentials-gcp-credentials.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.10.1.4.1. Google 工作负载身份联邦已知问题 复制链接链接已复制到粘贴板!
-
在配置了 GCP 工作负载身份联邦时,卷快照位置(VSL) 备份会以一个
PartiallyFailed阶段完成。Google 工作负载身份联邦身份验证不支持 VSL 备份。
5.10.1.5. 安装数据保护应用程序 复制链接链接已复制到粘贴板!
您可以通过创建 DataProtectionApplication API 的实例来安装数据保护应用程序(DPA)。
先决条件
- 您必须安装 OADP Operator。
- 您必须将对象存储配置为备份位置。
- 如果使用快照来备份 PV,云供应商必须支持原生快照 API 或 Container Storage Interface(CSI)快照。
-
如果备份和快照位置使用相同的凭证,您必须创建带有默认名称
cloud-credentials-gcp的Secret。 如果备份和快照位置使用不同的凭证,您必须创建两个
Secret:-
带有备份位置的自定义名称的
secret。您可以将此Secret添加到DataProtectionApplicationCR 中。 -
带有快照位置的另一个自定义名称的
Secret。您可以将此Secret添加到DataProtectionApplicationCR 中。
注意如果您不想在安装过程中指定备份或快照位置,您可以使用空
credentials-velero文件创建默认Secret。如果没有默认Secret,安装将失败。-
带有备份位置的自定义名称的
流程
-
点 Ecosystem
Installed Operators,然后选择 OADP Operator。 - 在 Provided APIs 下,点 DataProtectionApplication 框中的 Create 实例。
点 YAML View 并更新
DataProtectionApplication清单的参数:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- OADP 的默认命名空间是
openshift-adp。命名空间是一个变量,可配置。 - 2
openshift插件是必需的。- 3
- 指定在超时发生前等待多个 Velero 资源的分钟,如 Velero CRD 可用、volumeSnapshot 删除和备份存储库可用。默认值为 10m。
- 4
- 将管理请求路由到服务器的管理代理。
- 5
- 如果要启用
nodeAgent并执行文件系统备份,则将此值设置为true。 - 6
- 输入
kopia或restic作为您的上传者。您不能在安装后更改选择。对于 Built-in DataMover,您必须使用 Kopia。nodeAgent部署守护进程集,这意味着nodeAgentpod 在每个工作节点上运行。您可以通过在BackupCR 中添加spec.defaultVolumesToFsBackup: true来配置文件系统备份。 - 7
- 指定 Kopia 或 Restic 可用的节点。默认情况下,Kopia 或 Restic 在所有节点上运行。
- 8
- 包含凭证的 secret 密钥。对于 Google 工作负载身份联邦云身份验证,请使用
service_account.json。 - 9
- 包含凭证的 secret 名称。如果没有指定这个值,则使用默认值
cloud-credentials-gcp。 - 10
- 指定存储桶作为备份存储位置。如果存储桶不是 Velero 备份的专用存储桶,您必须指定一个前缀。
- 11
- 如果存储桶用于多个目的,请为 Velero 备份指定一个前缀,如
velero。 - 12
- 指定快照位置,除非您使用 CSI 快照或 Restic 备份 PV。
- 13
- 快照位置必须与 PV 位于同一区域。
- 14
- 指定您创建的
Secret对象的名称。如果没有指定这个值,则使用默认值cloud-credentials-gcp。如果您指定了自定义名称,则使用自定义名称进行备份位置。 - 15
- Google 工作负载身份联邦支持内部镜像备份。如果您不想使用镜像备份,请将此字段设置为
false。
- 点 Create。
验证
运行以下命令,查看 OpenShift API for Data Protection (OADP) 资源来验证安装:
oc get all -n openshift-adp
$ oc get all -n openshift-adpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,验证
DataProtectionApplication(DPA) 是否已协调:oc get dpa dpa-sample -n openshift-adp -o jsonpath='{.status}'$ oc get dpa dpa-sample -n openshift-adp -o jsonpath='{.status}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"conditions":[{"lastTransitionTime":"2023-10-27T01:23:57Z","message":"Reconcile complete","reason":"Complete","status":"True","type":"Reconciled"}]}{"conditions":[{"lastTransitionTime":"2023-10-27T01:23:57Z","message":"Reconcile complete","reason":"Complete","status":"True","type":"Reconciled"}]}Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
验证
type被设置为Reconciled。 运行以下命令,验证备份存储位置并确认
PHASE为Available:oc get backupstoragelocations.velero.io -n openshift-adp
$ oc get backupstoragelocations.velero.io -n openshift-adpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME PHASE LAST VALIDATED AGE DEFAULT dpa-sample-1 Available 1s 3d16h true
NAME PHASE LAST VALIDATED AGE DEFAULT dpa-sample-1 Available 1s 3d16h trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.10.1.6. 使用客户端 burst 和 QPS 设置配置 DPA 复制链接链接已复制到粘贴板!
burst 设置决定在应用限制前可以发送到 velero 服务器的请求数量。达到 burst 限制后,查询每秒 (QPS) 设置决定了每秒可以发送多少个额外请求。
您可以使用 burst 和 QPS 值配置数据保护应用程序 (DPA) 来设置 velero 服务器的 burst 和 QPS 值。您可以使用 DPA 的 dpa.configuration.velero.client-burst 和 dpa.configuration.velero.client-qps 字段来设置 burst 和 QPS 值。
先决条件
- 已安装 OADP Operator。
5.10.1.7. 配置节点代理和节点标签 复制链接链接已复制到粘贴板!
Data Protection Application (DPA) 使用 nodeSelector 字段来选择哪些节点可以运行节点代理。nodeSelector 字段是推荐的节点选择约束形式。
流程
通过添加自定义标签,在您选择的任何节点上运行节点代理:
oc label node/<node_name> node-role.kubernetes.io/nodeAgent=""
$ oc label node/<node_name> node-role.kubernetes.io/nodeAgent=""Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意任何指定的标签都需要与每个节点上的标签匹配。
在
DPA.spec.configuration.nodeAgent.podConfig.nodeSelector字段中使用相同的自定义标签,用于标记节点。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下示例是
nodeSelector的反模式,除非标签'node-role.kubernetes.io/infra: ""'和'node-role.kubernetes.io/worker: ""'都位于节点上,否则无法工作:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.10.1.8. 配置节点代理负载关联性 复制链接链接已复制到粘贴板!
您可以使用 DataProtectionApplication (DPA) 自定义资源 (CR) 的 spec.podConfig.nodeSelector 对象将节点代理 pod 调度到特定的节点上。
请参阅以下示例,您可以在其中将节点代理 pod 调度到带有标签 label.io/role: cpu-1 和 other-label.io/other-role: cpu-2 的节点上。
您可以使用 DPA spec 中的 nodeagent.loadAffinity 对象对节点代理 pod 调度添加更多限制。
先决条件
-
您必须以具有
cluster-admin权限的用户身份登录。 - 已安装 OADP Operator。
- 您已配置了 DPA CR。
流程
配置 DPA spec
nodegent.loadAffinity对象,如下例所示。在示例中,您可以确保节点代理 pod 仅调度到具有标签
label.io/role: cpu-1的节点上,标签label.io/hostname与node1或node2匹配。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.10.1.9. 节点代理负载均衡指南 复制链接链接已复制到粘贴板!
使用以下准则在 DataProtectionApplication (DPA) 自定义资源 (CR) 中配置节点代理 loadAffinity 对象。
-
使用
spec.nodeagent.podConfig.nodeSelector对象进行简单节点匹配。 -
对于更复杂的场景,使用没有
podConfig.nodeSelector对象的loadAffinity.nodeSelector对象。 -
您可以使用
podConfig.nodeSelector和loadAffinity.nodeSelector对象,但loadAffinity对象必须与podConfig对象相比相等或更严格。在这种情况下,podConfig.nodeSelector标签必须是loadAffinity.nodeSelector对象中使用的标签的子集。 -
如果您在 DPA 中配置了
podConfig.nodeSelector和loadAffinity.nodeSelector对象,则无法使用matchExpressions和matchLabels字段。 请参见以下示例在 DPA 中配置
podConfig.nodeSelector和loadAffinity.nodeSelector对象。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.10.1.10. 配置节点代理负载并发 复制链接链接已复制到粘贴板!
您可以控制在集群中的每个节点上可以同时运行的最大节点代理操作数量。
您可以使用 Data Protection Application (DPA) 的以下字段之一配置它:
-
globalConfig:定义跨所有节点中的节点代理的默认并发限制。 -
perNodeConfig: 根据nodeSelector标签指定特定节点的不同并发限制。这为其中某些节点可能具有不同的作用或角色的环境提供了灵活性。
先决条件
-
您必须以具有
cluster-admin权限的用户身份登录。
流程
如果要对特定节点使用负载并发性,请在这些节点中添加标签:
oc label node/<node_name> label.io/instance-type='large'
$ oc label node/<node_name> label.io/instance-type='large'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为您的 DPA 实例配置负载并发字段:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.10.1.11. 以非 root 和非特权用户配置节点代理 复制链接链接已复制到粘贴板!
要增强节点代理安全性,您可以使用 DataProtectionApplication (DPA) 自定义资源 (CR) 中的 spec.configuration.velero.disableFsBackup 设置将 OADP Operator 节点代理 daemonset 配置为以非 root 用户身份运行。
通过将 spec.configuration.velero.disableFsBackup 设置为 true,节点代理安全上下文将 root 文件系统设置为只读,并将 privileged 标志设置为 false。
将 spec.configuration.velero.disableFsBackup 设置为 true 可增强节点代理安全性,方法是删除特权容器并强制实施只读根文件系统。
但是,它还使用 Kopia 禁用文件系统备份 (FSB)。如果您的工作负载依赖 FSB 备份不支持原生快照的卷,您应该评估 disableFsBackup 配置是否适合您的用例。
先决条件
- 已安装 OADP Operator。
流程
在 DPA 中配置
disableFsBackup字段,如下例所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令,验证节点代理安全上下文是否被设置为以非 root 身份运行,并且 root 文件系统是
readOnly:oc get daemonset node-agent -o yaml
$ oc get daemonset node-agent -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例如下:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.10.1.12. 配置存储库维护 复制链接链接已复制到粘贴板!
OADP 存储库维护是一个后台作业,您可以独立于节点代理 pod 配置它。这意味着,您可以将存储库维护 pod 调度到节点代理正在运行或没有运行的节点上。
只有在使用 Kopia 作为备份存储库时,您只能在 DataProtectionApplication (DPA)自定义资源(CR)中使用存储库维护作业关联性配置。
您可以选择在全局级别上配置负载关联性,会影响所有存储库。或者,您可以为每个存储库配置负载关联性。您还可以使用全局和每个存储库配置的组合。
先决条件
-
您必须以具有
cluster-admin权限的用户身份登录。 - 已安装 OADP Operator。
- 您已配置了 DPA CR。
流程
使用以下方法之一在 DPA spec 中配置
loadAffinity对象:
5.10.1.13. 配置 Velero 负载关联性 复制链接链接已复制到粘贴板!
对于每个 OADP 部署,有一个 Velero pod,其主要目的是调度 Velero 工作负载。要调度 Velero pod,您可以在 DataProtectionApplication (DPA) 自定义资源 (CR) spec 中使用 velero.podConfig.nodeSelector 和 velero.loadAffinity 对象。
使用 podConfig.nodeSelector 对象将 Velero pod 分配给特定的节点。您还可以为 pod 级别关联性和反关联性配置 velero.loadAffinity 对象。
OpenShift 调度程序应用规则并执行 Velero pod 部署调度。
先决条件
-
您必须以具有
cluster-admin权限的用户身份登录。 - 已安装 OADP Operator。
- 您已配置了 DPA CR。
流程
在 DPA spec 中配置
velero.podConfig.nodeSelector和velero.loadAffinity对象,如下例所示:velero.podConfig.nodeSelector对象配置:Copy to Clipboard Copied! Toggle word wrap Toggle overflow velero.loadAffinity对象配置:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.10.1.14. 覆盖 DPA 中的 imagePullPolicy 设置 复制链接链接已复制到粘贴板!
在 OADP 1.4.0 或更早版本中,Operator 会将 Velero 和节点代理 pod 的 imagePullPolicy 字段设置为 Always。
在 OADP 1.4.1 或更高版本中,Operator 首先检查每个镜像是否有 sha256 或 sha512 摘要,并相应地设置 imagePullPolicy 字段:
-
如果镜像有摘要,Operator 会将
imagePullPolicy设置为IfNotPresent。 -
如果镜像没有摘要,Operator 会将
imagePullPolicy设置为Always。
您还可以使用 Data Protection Application (DPA)中的 spec.imagePullPolicy 字段覆盖 imagePullPolicy 字段。
先决条件
- 已安装 OADP Operator。
流程
在 DPA 中配置
spec.imagePullPolicy字段,如下例所示:数据保护应用程序示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定
imagePullPolicy的值。在本例中,imagePullPolicy字段设置为Never。
5.10.1.14.1. 在 DataProtectionApplication CR 中启用 CSI 复制链接链接已复制到粘贴板!
您可以在 DataProtectionApplication 自定义资源(CR)中启用 Container Storage Interface(CSI)来备份持久性卷,以使用 CSI 快照备份持久性卷。
先决条件
- 云供应商必须支持 CSI 快照。
流程
编辑
DataProtectionApplicationCR,如下例所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 添加
csi默认插件。
5.10.1.14.2. 在 DataProtectionApplication 中禁用节点代理 复制链接链接已复制到粘贴板!
如果您没有在备份中使用 Restic、Kopia 或 DataMover,您可以在 DataProtectionApplication 自定义资源(CR)中禁用 nodeAgent 字段。在禁用 nodeAgent 前,请确保 OADP Operator 闲置且没有运行任何备份。
流程
您可以设置一个作业来启用和禁用 DataProtectionApplication CR 中的 nodeAgent 字段。如需更多信息,请参阅"使用作业在 pod 中运行任务"。