本文介绍备份中心使用过程中一些常见问题的解决方法。
索引
-
Flexvolume集群migrate-controller组件无法正常拉起
-
备份、恢复或快照转换任务状态为Failed,且提示VaultError: backup vault is unavailable: xxx
-
备份、恢复或快照转换任务状态为Failed,且提示backup location is not ok, please maybe check access oss
-
备份、恢复或快照转换任务长期处于Inprogress状态
-
控制台界面提示当前数据拉取失败,请刷新重试!404 page not found
-
控制台界面提示已存在同名的资源,请修改名称后再试
-
跨集群恢复应用时,出现初始化仓库提示,无法选择备份任务进行恢复
-
如何修改备份仓库?
-
备份任务状态为Failed,且提示PROCESS velero failed err: VeleroError: xxx
-
恢复任务状态为Completed,但集群中有部分资源未创建
若您通过命令行工具使用备份中心,问题排查前,建议您先将备份服务组件migrate-controller升级至最新版本。组件升级不会影响已有的备份。
Flexvolume集群migrate-controller组件无法正常拉起
migrate-controller组件不支持Flexvolume类型的集群。若需使用备份中心功能,您可以通过以下方式将Flexvolume插件迁移至CSI。
-
通过csi-compatible-controller组件迁移Flexvolume至CSI
-
将无存储集群的Flexvolume迁移至CSI
-
将Flexvolume类型的NAS静态存储卷迁移至CSI
-
将Flexvolume类型的OSS静态存储卷迁移至CSI
-
其他情况,请加入钉钉用户群(钉钉群号:35532895)咨询。
备份、恢复或快照转换任务状态为Failed,且提示VaultError: backup vault is unavailable: xxx
问题现象
备份、恢复或快照转换任务状态为Failed,且提示VaultError: backup vault is unavailable: xxx。
问题原因
-
OSS Bucket不存在。
-
集群OSS权限未配置。
-
OSS Bucket网络访问不通。
解决方案
-
登录OSS管理控制台,确认备份仓库绑定的OSS Bucket已存在。
若OSS Bucket缺失,请创建Bucket并重新绑定。具体操作,请参见控制台创建存储空间。
-
确认集群OSS权限已配置。
-
ACK Pro版集群:无需配置OSS权限,确认集群备份仓库关联的OSS Bucket名称以cnfs-oss-**命名。
-
ACK专有版集群和注册集群:需配置OSS权限。具体操作,请参见安装备份服务组件并配置权限。
对于早期创建的托管版集群,可能缺少OSS相关权限。您可以通过以下命令进行排查。
kubectl get secret -n kube-system | grep addon.csi.token
预期输出:
addon.csi.token Opaque 1 62d
若存在以上输出:则此集群只需要使用cnfs-oss-*开头的Bucket,无需配置OSS权限。
若没有以上输出:则此集群需要参考ACK专有版集群和注册集群,配置OSS权限。具体操作,请参见安装备份服务组件并配置权限。
说明
备份仓库不支持同名重建,也不支持绑定非cnfs-oss-**命名的OSS Bucket。若您已绑定过非cnfs-oss-**命名的OSS Bucket,请重新创建非同名的备份仓库,并绑定符合命名要求的OSS Bucket。
-
-
使用以下命令,确认集群相关网络配置。
kubectl get backuplocation -n csdr -o yaml | grep network
输出结果类似如下内容:
network: internal
-
当network为
internal
时,说明备份仓库正通过内网访问OSS Bucket。 -
当network为
public
时,说明备份仓库正通过公网访问OSS Bucket。
以下三种情况,备份仓库必须通过公网访问OSS Bucket。
-
集群和OSS Bucket不在同一Region。
-
当前集群为ACK Edge集群。
-
当前集群为注册集群,且没有通过CEN、高速通道专线、VPN等方式与云上VPC互通;或已与云上VPC互通,但未配置指向该地域OSS内网网段的路由。您需要配置指向该地域OSS内网网段的路由。
-
关于线下IDC接入云上VPC的相关内容,请参见接入方式介绍。
-
关于OSS内网域名与VIP网段对照表,请参见OSS内网域名与VIP网段对照表。
-
如果必须通过公网访问OSS Bucket时,您可以使用以下命令,将OSS Bucket的访问方式修改为公网访问。以下代码中
为备份仓库的名称,
为OSS Bucket所在的地域,例如cn-hangzhou。
kubectl patch -ncsdr backuplocation/ --type='json' -p '[{"op":"add","path":"/spec/config","value":{"network":"public","region":""}}]' kubectl patch -ncsdr backupstoragelocation/ --type='json' -p '[{"op":"add","path":"/spec/config","value":{"network":"public","region":""}}]'
-
备份、恢复或快照转换任务状态为Failed,且提示backup location is not ok, please maybe check access oss
问题现象
备份、恢复或快照转换任务状态为Failed,且提示backup location is not ok, please maybe check access oss。
问题原因
集群为1.20以下版本
可能原因如下:
-
需要额外保证各备份仓库关联的OSS Bucket子路径是相互独立的,即不存在包含关系,如
/
和/A
,/A
和/A/B
,且只能存储备份中心产生的备份数据,否则,涉及的备份仓库将不可用。 -
与备份、恢复或快照转换任务状态为Failed,且提示VaultError: backup vault is unavailable: xxx中的可能原因一致。
集群为1.20及以上版本
可能由于备份服务组件migrate-controller版本过低。
解决方案
集群为1.20以下版本
-
需要额外保证各备份仓库关联的OSS Bucket子路径是相互独立的,且只能存储备份中心产生的备份数据。您可以使用以下命令,进一步检查确认。以下代码中
为备份仓库的名称。
kubectl describe backupstoragelocation -n csdr | grep message
输出结果类似如下内容:
Backup store contains invalid top-level directories: ****
表明该备份仓库关联的OSS Bucket子路径下有其他数据。您可以选择以下方式解决。
-
升级集群版本至1.20及以上,并将备份服务组件migrate-controller升级至最新版本。
-
新建关联空路径的备份仓库并重新命名,请勿删除后重建同名的备份仓库。
-
-
参见备份、恢复或快照转换任务状态为Failed,且提示VaultError: backup vault is unavailable: xxx中的解决方案处理。
集群为1.20及以上版本
请将备份服务组件migrate-controller升级至最新版本即可解决。具体操作,请参见管理组件。
备份、恢复或快照转换任务长期处于Inprogress状态
原因1:csdr命名空间中组件运行异常
确认组件运行状态,并查询组件异常原因。
-
执行以下命令,查询csdr命名空间中的组件是否出现重启或无法拉起的情况。
kubectl get pod -n csdr
-
执行以下命令,查询组件重启或无法拉起的原因。
kubectl describe pod -n csdr
-
若原因是OOM异常重启:
请执行以下命令,调整对应Deployment的Limit值。其中,
csdr-controller-***
对应为
csdr-controller
;csdr-velero-***
对应为
csdr-velero
。kubectl patch deploy -p '{"spec":{"containers":{"resources":{"limits":""}}}}'
-
若原因是HBR权限未配置导致拉起失败:请参见以下步骤处理。
-
确认集群已开通HBR服务。
-
未开通:请开通HBR服务。具体操作,请参见混合云备份HBR。
-
已开通:请转下一步。
-
-
确认ACK专有版集群和注册集群已配置HBR权限。
-
未配置:请配置HBR权限。具体操作,请参见安装备份服务组件并配置权限。
-
已配置:请转下一步。
-
-
执行以下命令,确认HBR Client组件所需Token是否存在。
kubectl describe
若Event报错提示couldnt find key HBR_TOKEN,表明Token缺失,请参见以下步骤处理。
-
执行以下命令,查询对应
hbr-client-***
所在节点。kubectl get pod -n csdr -owide
-
执行以下命令,将对应Node的
labels: csdr.alibabacloud.com/agent-enable
由true
修改为false
。kubectl label node csdr.alibabacloud.com/agent-enable=false --overwrite
重要
-
重新进行备份恢复时,将自动创建Token并拉起hbr-client。
-
将其他集群的Token拷贝到本集群,由此拉起的hbr-client不可用。您需要删除已拷贝的Token,以及由此Token拉起的
hbr-client-*** Pod
后,再执行上述步骤。
-
-
-
原因2:云盘数据备份时,集群快照权限未配置
若您对挂载云盘数据卷的应用使用数据备份功能时,长期处于Inprogress状态。请执行以下命令,查询集群新创建的VolumeSnapshot资源。
kubectl get volumesnapshot -n
部分预期输出:
NAME READYTOUSE SOURCEPVC SOURCESNAPSHOTCONTENT ...
true ...
若所有的volumesnapshot
的READYTOUSE
长期处于false
状态,请参见如下步骤处理。
-
登录ECS管理控制台,确认是否已开启云盘快照服务。
-
未开启:请在对应地域开通云盘快照。具体操作,请参见开通快照。
-
已开启:请转下一步。
-
-
确认是否已配置云盘快照的使用权限。
-
登录容器服务管理控制台,在左侧导航栏单击集群。
-
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择集群信息。
-
在集群信息页面,单击集群资源页签,然后单击Master RAM角色右侧链接进入权限管理页面。
-
在权限策略列表,查看云盘快照权限是否正常。
-
若k8sMasterRolePolicy-Csi-***权限策略已存在,且已配置
k8sMasterRolePolicy-Csi-***
和k8sMasterRolePolicy-Csi-***
权限,表明云盘快照权限正常。请提交工单处理。 -
若k8sMasterRolePolicy-Csi-***权限策略缺失,请为Master RAM角色授予如下云盘快照权限策略。具体操作,请参见创建自定义权限策略和为RAM角色授权。
{ "Version": "1", "Statement": [ { "Action": [ "ecs:DescribeDisks", "ecs:DescribeInstances", "ecs:DescribeAvailableResource", "ecs:DescribeInstanceTypes", "nas:DescribeFileSystems", "ecs:AttachDisk", "ecs:CreateDisk", "ecs:CreateSnapshot", "ecs:DeleteDisk", "ecs:DeleteSnapshot", "ecs:DetachDisk" ], "Resource": [ "*" ], "Effect": "Allow" } ] }
-
-
权限配置完成后,若问题仍未解决,请提交工单处理。
-
控制台界面提示当前数据拉取失败,请刷新重试!404 page not found
问题现象
控制台界面提示当前数据拉取失败,请刷新重试!404 page not found。
问题原因
相关CRD部署失败。
解决方案
-
检查集群中的节点是否存在。若不存在,备份中心将无法部署。
-
确认集群是否使用Flexvolume存储插件。若集群使用Flexvolume存储插件,请将集群的Flexvolume插件迁移至CSI插件。具体操作,请参见Flexvolume集群migrate-controller组件无法正常拉起。
-
若您通过命令行工具使用备份中心,请检查相关YAML配置是否有误。具体操作,请参见通过命令行工具实现备份和恢复。
-
若您的集群为注册集群,请确认是否配置了相关权限。具体操作,请参见ACK专有版集群与注册集群。
控制台界面提示已存在同名的资源,请修改名称后再试
问题现象
在创建或删除备份、制作快照、恢复任务时,控制台界面提示已存在同名的资源,请修改名称后再试。
问题原因
在控制台删除任务时,将在集群中创建deletrequest
资源,由工作组件进行系列删除操作,不仅仅删除对应的备份资源。关于命令行操作也类似,请参见通过命令行工具实现备份和恢复。
如果删除操作错误或处理deleterequest
资源流程中出错,将导致部分集群中部分资源无法删除,出现存在同名资源的提示。
解决方案
-
根据提示删除对应的同名资源。例如,报错提示
deleterequests.csdr.alibabacloud.com "xxxxx-dbr" already exists
,您可以通过执行以下命令删除。kubectl -n csdr delete deleterequests xxxxx-db
-
使用新的名称创建对应任务。
跨集群恢复应用时,出现初始化仓库提示,无法选择备份任务进行恢复
问题现象
跨集群恢复应用时,出现初始化仓库提示,无法选择备份任务进行恢复。
问题原因
由于您选择的备份仓库未与当前集群进行关联。初始化仓库操作会将备份仓库的基础信息(OSS Bucket)下发到当前集群中,然后将备份仓库中已成功备份完成的数据在集群中进行初始化。只有初始化操作完成后,才可以在当前集群中选择到该备份仓库中的备份数据进行恢复操作。
解决方案
在创建恢复任务页面,单击备份仓库右侧的初始化仓库,待备份仓库初始化完成后,再选择待恢复的任务。
如何修改备份仓库?
备份中心不支持备份仓库修改。备份仓库如需修改,只能删除后重建。
由于备份仓库是共用的,已创建的备份仓库随时可能处于备份或恢复状态。此时,修改任意一个参数,都可能导致备份或恢复应用时找不到数据。所以备份仓库不允许修改。
重要
-
若确认备份仓库未被使用过,您可以通过先删除此备份仓库,然后再创建同名备份仓库的方式间接修改。
-
若备份仓库已进行过备份或恢复操作,则不允许修改,避免任务备份失败。
备份任务状态为Failed,且提示PROCESS velero failed err: VeleroError: xxx
问题现象
任务备份失败,且提示PROCESS velero failed err: VeleroError: xxx。
问题原因
csdr命名空间下名为csdr-velero-****的Pod在备份过程出现异常,通常为OOMKilled。csdr-velero在应用备份期间会出现内存峰值。当您需备份的对象较多时,可能会出现OOMKilled。
解决方案
关于排查和解决方案,请参见备份、恢复或快照转换任务长期处于Inprogress状态。
恢复任务状态为Completed,但集群中有部分资源未创建
问题现象
恢复任务状态为Completed,但集群中有部分资源未创建。
问题原因
-
该资源未被备份。
-
恢复集群中已经存在同名资源,恢复时跳过。
-
由于端口冲突、底层云产品资源依赖等原因,部分任务恢复失败。
解决方案
-
执行以下命令,确认该资源已经备份。
以下命令行中,
为备份任务的名称,
为未创建的资源所在的命名空间,
为该资源的名称。
kubectl -n csdr describe configmap | grep "/"
若无输出结果,表明该资源未被备份,可重新备份后恢复,或手动部署该资源。
未被备份的原因:
-
备份时,该资源还未创建或状态异常。
-
设置了排除命名空间或排除资源,该资源命中被排除;设置了包含命名空间、指定资源、或指定标签备份,该资源未被命中被排除。
-
未被任何应用使用的Cluster Scoped资源。
-
-
确认集群中是否已存在同名资源,若需要覆盖该资源,可以删除后重新恢复。
-
执行以下命令,获取Velero工作组件名称。
kubectl -n csdr get pod | grep csdr-velero | awk '{print $1}'
预期输出:
csdr-velero-75996bbdb8-gddng
-
执行以下命令,获取应用恢复失败列表及原因。
以下命令行中,
为恢复任务的名称。
kubectl -n csdr exec -it csdr-velero-75996bbdb8-gddng -- /velero describe restore
预期输出:
... Warnings: Velero: Cluster: could not restore, CustomResourceDefinition "volumesnapshots.snapshot.storage.k8s.io" already exists. Warning: the in-cluster version is different than the backed-up version. Namespaces: Errors: Velero: Cluster: Namespaces: : error restoring services//: Internal error occurred: failed to allocate requested HealthCheck NodePort 32578: provided port is already allocated ... ...
预期输出中,
为恢复资源所在命名空间的名称,该示例中恢复失败的资源类型为
services
,为该资源的名称。
您可以通过失败原因自助排查解决。例如,示例中恢复失败的原因为Internal error occurred: failed to allocate requested HealthCheck NodePort 32578: provided port is already allocated
,当备份和恢复集群为同一集群时,会自动修改健康检查端口;备份和恢复集群为不同集群时,该端口号会被保留。
重要
当备份的Service为使用已有SLB创建的LoadBalancer类型时,恢复的Service将复用该指定的SLB,并关闭强制覆盖已有监听。更多信息,请参见复用SLB的注意事项。
内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家
阿里云企业补贴进行中: 马上申请
腾讯云限时活动1折起,即将结束: 马上收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠
转转请注明出处:https://www.yunxiaoer.com/171336.html