BackupSchedule 报错 the object has been modified

【TiDB 使用环境】

apiVersion: pingcap.com/v1alpha1
kind: TidbCluster
metadata:
  name: basic
spec:
  version: v8.5.0
  timezone: Asia/Shanghai
  pvReclaimPolicy: Retain
  enableDynamicConfiguration: true
  configUpdateStrategy: RollingUpdate
  discovery: {}
  helper:
    image: m.daocloud.io/docker.io/library/alpine:3.16.0
  pd:
...

【问题复现路径】做过哪些操作出现的问题

apiVersion: pingcap.com/v1alpha1
kind: BackupSchedule
metadata:
  name: basic-backup-schedule-nfs
  namespace: tidb-cluster
spec:
  maxBackups: 3
  pause: false
  schedule: "*/30 * * * *"
  backupTemplate:
    cleanPolicy: Retain
    resources:
      requests:
        cpu: "500m"
        memory: "512Mi"
      limits:
        cpu: "1000m"
        memory: "1Gi"
    backupMode: snapshot
    backupType: full
    toolImage: m.daocloud.io/docker.io/pingcap/br:v8.5.0
    br:
      cluster: basic
      clusterNamespace: tidb-cluster
      logLevel: info
      concurrency: 4
      # rateLimit: 0
      # checksum: true
    local:
      prefix: tidb-cluster/basic/full/scheduled
      volume:
        name: backup
        persistentVolumeClaim:
          claimName: tidb-cluster-backup-pvc
      volumeMount:
        name: backup
        mountPath: /backup

【遇到的问题:问题现象及影响】
备份失败
【复制黏贴 ERROR 报错的日志】

root@node1:~/ben.wangz/temp# kubectl -n tidb-cluster logs -f backup-basic-backup-schedule-nfs-2025-05-28t08-39-00-jlbt2
Defaulted container "backup" out of: backup, br (init)
Create rclone.conf file.
/tidb-backup-manager backup --namespace=tidb-cluster --backupName=basic-backup-schedule-nfs-2025-05-28t08-39-00 --tikvVersion=v8.5.0 --mode=snapshot
E0528 16:45:15.215547       9 reflector.go:147] k8s.io/client-go@v0.28.14/tools/cache/reflector.go:229: Failed to watch *v1alpha1.Backup: unknown (get backups.pingcap.com)
I0528 16:45:15.266686       9 backup.go:78] start to process backup tidb-cluster/basic-backup-schedule-nfs-2025-05-28t08-39-00
I0528 16:45:15.273192       9 manager.go:109] start to process backup: {"kind":"Backup","apiVersion":"pingcap.com/v1alpha1","metadata":{"name":"basic-backup-schedule-nfs-2025-05-28t08-39-00","namespace":"tidb-cluster","uid":"aad30fd4-6dd3-4125-aff4-070d8361a8f4","resourceVersion":"52543406","generation":7,"creationTimestamp":"2025-05-28T08:39:09Z","labels":{"app.kubernetes.io/instance":"basic-backup-schedule-nfs","app.kubernetes.io/managed-by":"backup-schedule-operator","app.kubernetes.io/name":"backup-schedule","tidb.pingcap.com/backup-schedule":"basic-backup-schedule-nfs"},"annotations":{"kubectl.kubernetes.io/last-applied-configuration":"{\"apiVersion\":\"pingcap.com/v1alpha1\",\"kind\":\"BackupSchedule\",\"metadata\":{\"annotations\":{},\"name\":\"basic-backup-schedule-nfs\",\"namespace\":\"tidb-cluster\"},\"spec\":{\"backupTemplate\":{\"backupMode\":\"snapshot\",\"backupType\":\"full\",\"br\":{\"cluster\":\"basic\",\"clusterNamespace\":\"tidb-cluster\",\"concurrency\":4,\"logLevel\":\"info\"},\"cleanPolicy\":\"Retain\",\"local\":{\"prefix\":\"tidb-cluster/basic/full/scheduled\",\"volume\":{\"name\":\"backup\",\"persistentVolumeClaim\":{\"claimName\":\"tidb-cluster-backup-pvc\"}},\"volumeMount\":{\"mountPath\":\"/backup\",\"name\":\"backup\"}},\"resources\":{\"limits\":{\"cpu\":\"1000m\",\"memory\":\"1Gi\"},\"requests\":{\"cpu\":\"500m\",\"memory\":\"512Mi\"}},\"toolImage\":\"m.daocloud.io/docker.io/pingcap/br:v8.5.0\"},\"maxBackups\":3,\"pause\":false,\"schedule\":\"*/3 * * * *\"}}\n"},"ownerReferences":[{"apiVersion":"pingcap.com/v1alpha1","kind":"BackupSchedule","name":"basic-backup-schedule-nfs","uid":"e6ab694d-7a84-4ec0-8ef9-dbbaf8839c87","controller":true,"blockOwnerDeletion":true}],"managedFields":[{"manager":"tidb-backup-manager","operation":"Update","apiVersion":"pingcap.com/v1alpha1","time":"2025-05-28T08:39:12Z","fieldsType":"FieldsV1","fieldsV1":{"f:status":{"f:backupPath":{}}}},{"manager":"tidb-controller-manager","operation":"Update","apiVersion":"pingcap.com/v1alpha1","time":"2025-05-28T08:45:09Z","fieldsType":"FieldsV1","fieldsV1":{"f:metadata":{"f:annotations":{".":{},"f:kubectl.kubernetes.io/last-applied-configuration":{}},"f:labels":{".":{},"f:app.kubernetes.io/instance":{},"f:app.kubernetes.io/managed-by":{},"f:app.kubernetes.io/name":{},"f:tidb.pingcap.com/backup-schedule":{}},"f:ownerReferences":{".":{},"k:{\"uid\":\"e6ab694d-7a84-4ec0-8ef9-dbbaf8839c87\"}":{}}},"f:spec":{".":{},"f:backoffRetryPolicy":{".":{},"f:maxRetryTimes":{},"f:minRetryDuration":{},"f:retryTimeout":{}},"f:backupMode":{},"f:backupType":{},"f:br":{".":{},"f:cluster":{},"f:clusterNamespace":{},"f:concurrency":{},"f:logLevel":{}},"f:calcSizeLevel":{},"f:cleanPolicy":{},"f:local":{".":{},"f:prefix":{},"f:volume":{".":{},"f:name":{},"f:persistentVolumeClaim":{".":{},"f:claimName":{}}},"f:volumeMount":{".":{},"f:mountPath":{},"f:name":{}}},"f:resources":{".":{},"f:limits":{".":{},"f:cpu":{},"f:memory":{}},"f:requests":{".":{},"f:cpu":{},"f:memory":{}}},"f:toolImage":{},"f:volumeBackupInitJobMaxActiveSeconds":{}},"f:status":{".":{},"f:backoffRetryStatus":{},"f:conditions":{},"f:phase":{},"f:timeCompleted":{},"f:timeStarted":{}}}}]},"spec":{"resources":{"limits":{"cpu":"1","memory":"1Gi"},"requests":{"cpu":"500m","memory":"512Mi"}},"backupType":"full","backupMode":"snapshot","local":{"volume":{"name":"backup","persistentVolumeClaim":{"claimName":"tidb-cluster-backup-pvc"}},"volumeMount":{"name":"backup","mountPath":"/backup"},"prefix":"tidb-cluster/basic/full/scheduled/basic-pd.tidb-cluster-2379-2025-05-28t08-39-00"},"br":{"cluster":"basic","clusterNamespace":"tidb-cluster","logLevel":"info","concurrency":4},"calcSizeLevel":"all","toolImage":"m.daocloud.io/docker.io/pingcap/br:v8.5.0","cleanPolicy":"Retain","backoffRetryPolicy":{"minRetryDuration":"300s","maxRetryTimes":2,"retryTimeout":"30m"},"volumeBackupInitJobMaxActiveSeconds":600},"status":{"backupPath":"local:///backup/tidb-cluster/basic/full/scheduled/basic-pd.tidb-cluster-2379-2025-05-28t08-39-00","timeStarted":null,"timeCompleted":null,"phase":"Scheduled","conditions":[{"type":"Scheduled","status":"True","lastTransitionTime":"2025-05-28T08:45:09Z"},{"type":"Prepare","status":"True","lastTransitionTime":"2025-05-28T08:39:12Z"},{"type":"RetryFailed","status":"True","lastTransitionTime":"2025-05-28T08:45:09Z","reason":"RetryFailedBackup","message":"reason Job backup-basic-backup-schedule-nfs-2025-05-28t08-39-00 has failed, original reason BackoffLimitExceeded"},{"type":"Restart","status":"True","lastTransitionTime":"2025-05-28T08:45:09Z"}],"backoffRetryStatus":[{"retryNum":1,"detectFailedAt":"2025-05-28T08:39:39Z","expectedRetryAt":"2025-05-28T08:44:39Z","realRetryAt":"2025-05-28T08:45:09Z","retryReason":"Job backup-basic-backup-schedule-nfs-2025-05-28t08-39-00 has failed","originalReason":"BackoffLimitExceeded"}]}}
I0528 16:45:15.273273       9 manager.go:115] snapshot backup tidb-cluster/basic-backup-schedule-nfs-2025-05-28t08-39-00 was restarted, status is Scheduled
I0528 16:45:15.297373       9 backup_status_updater.go:128] Backup: [tidb-cluster/basic-backup-schedule-nfs-2025-05-28t08-39-00] updated successfully
E0528 16:45:15.314313       9 backup_status_updater.go:131] Failed to update backup [tidb-cluster/basic-backup-schedule-nfs-2025-05-28t08-39-00], error: Operation cannot be fulfilled on backups.pingcap.com "basic-backup-schedule-nfs-2025-05-28t08-39-00": the object has been modified; please apply your changes to the latest version and try again
E0528 16:45:15.344480       9 backup_status_updater.go:131] Failed to update backup [tidb-cluster/basic-backup-schedule-nfs-2025-05-28t08-39-00], error: Operation cannot be fulfilled on backups.pingcap.com "basic-backup-schedule-nfs-2025-05-28t08-39-00": the object has been modified; please apply your changes to the latest version and try again
E0528 16:45:15.370330       9 backup_status_updater.go:131] Failed to update backup [tidb-cluster/basic-backup-schedule-nfs-2025-05-28t08-39-00], error: Operation cannot be fulfilled on backups.pingcap.com "basic-backup-schedule-nfs-2025-05-28t08-39-00": the object has been modified; please apply your changes to the latest version and try again
E0528 16:45:15.396101       9 backup_status_updater.go:131] Failed to update backup [tidb-cluster/basic-backup-schedule-nfs-2025-05-28t08-39-00], error: Operation cannot be fulfilled on backups.pingcap.com "basic-backup-schedule-nfs-2025-05-28t08-39-00": the object has been modified; please apply your changes to the latest version and try again
E0528 16:45:15.420317       9 backup_status_updater.go:131] Failed to update backup [tidb-cluster/basic-backup-schedule-nfs-2025-05-28t08-39-00], error: Operation cannot be fulfilled on backups.pingcap.com "basic-backup-schedule-nfs-2025-05-28t08-39-00": the object has been modified; please apply your changes to the latest version and try again
Error from server (Conflict): Operation cannot be fulfilled on backups.pingcap.com "basic-backup-schedule-nfs-2025-05-28t08-39-00": the object has been modified; please apply your changes to the latest version and try again
Sleeping for 10 seconds before exit...

【其他附件:截图/日志/监控】

这个是K8S的行为,因为这个任务执行时连续失败超过了一定的次数,最终失败了
可以用kubectl describe或者kubectl logs看看失败的原因

是因为backup job 启动的pod 在修改k8s resource 吗?但是我从日志当中没有发现他在修改哪一个resource,不能修改他自己吧?


root@node1:~/ben.wangz/temp# kubectl -n tidb-cluster get backupschedule
NAME                        SCHEDULE      MAXBACKUPS   MAXRESERVEDTIME   AGE
basic-backup-schedule-nfs   */3 * * * *   3                              16h

root@node1:~/ben.wangz/temp# kubectl -n tidb-cluster get backup
basic-backup-schedule-nfs-2025-05-29t00-30-00   full   snapshot   Failed      local:///backup/tidb-cluster/basic/full/scheduled/basic-pd.tidb-cluster-2379-2025-05-29t00-30-00                                                                    52m
basic-backup-schedule-nfs-2025-05-29t00-48-00   full   snapshot   Failed      local:///backup/tidb-cluster/basic/full/scheduled/basic-pd.tidb-cluster-2379-2025-05-29t00-48-00                                                                    34m
basic-backup-schedule-nfs-2025-05-29t01-06-00   full   snapshot   Scheduled   local:///backup/tidb-cluster/basic/full/scheduled/basic-pd.tidb-cluster-2379-2025-05-29t01-06-00                                                                    16m

root@node1:~/ben.wangz/temp# kubectl -n tidb-cluster get job
NAME                                                   COMPLETIONS   DURATION   AGE
backup-basic-backup-schedule-nfs-2025-05-29t01-06-00   0/1           10m        10m

backupSchedule 启动的 backup job pod:

  • Exit Code: 1,应该是process 本身异常退出
  • describe 信息没有发现异常event
root@node1:~/ben.wangz/temp# kubectl -n tidb-cluster describe pod backup-basic-backup-schedule-nfs-2025-05-29t01-06-00-qrwwj
Name:             backup-basic-backup-schedule-nfs-2025-05-29t01-06-00-qrwwj
Namespace:        tidb-cluster
Priority:         0
Service Account:  tidb-backup-manager
Node:             node4/10.109.80.41
Start Time:       Thu, 29 May 2025 01:14:40 +0000
Labels:           app.kubernetes.io/component=backup
                  app.kubernetes.io/instance=basic-backup-schedule-nfs
                  app.kubernetes.io/managed-by=backup-operator
                  app.kubernetes.io/name=backup
                  batch.kubernetes.io/controller-uid=94dc5a81-68d9-4c83-b09a-f2eaaa8b6bcc
                  batch.kubernetes.io/job-name=backup-basic-backup-schedule-nfs-2025-05-29t01-06-00
                  controller-uid=94dc5a81-68d9-4c83-b09a-f2eaaa8b6bcc
                  job-name=backup-basic-backup-schedule-nfs-2025-05-29t01-06-00
                  tidb.pingcap.com/backup=basic-backup-schedule-nfs-2025-05-29t01-06-00
                  tidb.pingcap.com/backup-schedule=basic-backup-schedule-nfs
Annotations:      cni.projectcalico.org/containerID: e927fe2887d689eff4c80691c29972e81386cf1292ef9ee2f6678665390a95a4
                  cni.projectcalico.org/podIP:
                  cni.projectcalico.org/podIPs:
Status:           Failed
IP:               10.233.74.85
IPs:
  IP:           10.233.74.85
Controlled By:  Job/backup-basic-backup-schedule-nfs-2025-05-29t01-06-00
Init Containers:
  br:
    Container ID:  containerd://db81bc5ef72826fc622f64059f439f4d9ae2cecf7415423431db62f01f756567
    Image:         m.daocloud.io/docker.io/pingcap/br:v8.5.0
    Image ID:      m.daocloud.io/docker.io/pingcap/br@sha256:8b5991db5c1a270c252d9f9d094475a0473be02c900347cfa17e2f38c77b6666
    Port:          <none>
    Host Port:     <none>
    Command:
      /bin/sh
      -c
    Args:
      cp /br /var/lib/br-bin/br; echo 'BR copy finished'
    State:          Terminated
      Reason:       Completed
      Exit Code:    0
      Started:      Thu, 29 May 2025 01:14:42 +0000
      Finished:     Thu, 29 May 2025 01:14:42 +0000
    Ready:          True
    Restart Count:  0
    Limits:
      cpu:     1
      memory:  1Gi
    Requests:
      cpu:        500m
      memory:     512Mi
    Environment:  <none>
    Mounts:
      /var/lib/br-bin from br-bin (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-hf8kl (ro)
Containers:
  backup:
    Container ID:  containerd://27fa2b398641a56d9ac9e2b780366829f0844889e7bdb716e48eb9334aa382ad
    Image:         m.daocloud.io/docker.io/pingcap/tidb-backup-manager:v1.6.1
    Image ID:      m.daocloud.io/docker.io/pingcap/tidb-backup-manager@sha256:f8d81a8870d722894b46e4540e7ec901bd7aa6de69e938547a6db33e4bb30d42
    Port:          <none>
    Host Port:     <none>
    Args:
      backup
      --namespace=tidb-cluster
      --backupName=basic-backup-schedule-nfs-2025-05-29t01-06-00
      --tikvVersion=v8.5.0
      --mode=snapshot
    State:          Terminated
      Reason:       Error
      Exit Code:    1
      Started:      Thu, 29 May 2025 01:14:43 +0000
      Finished:     Thu, 29 May 2025 01:14:53 +0000
    Ready:          False
    Restart Count:  0
    Limits:
      cpu:     1
      memory:  1Gi
    Requests:
      cpu:     500m
      memory:  512Mi
    Environment:
      BR_LOG_TO_TERM:
      TZ:              Asia/Shanghai
    Mounts:
      /backup from backup (rw)
      /var/lib/br-bin from br-bin (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-hf8kl (ro)
Conditions:
  Type              Status
  Initialized       True
  Ready             False
  ContainersReady   False
  PodScheduled      True
Volumes:
  br-bin:
    Type:       EmptyDir (a temporary directory that shares a pod's lifetime)
    Medium:
    SizeLimit:  <unset>
  backup:
    Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
    ClaimName:  tidb-cluster-backup-pvc
    ReadOnly:   false
  kube-api-access-hf8kl:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
QoS Class:                   Burstable
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type    Reason     Age    From               Message
  ----    ------     ----   ----               -------
  Normal  Scheduled  6m51s  default-scheduler  Successfully assigned tidb-cluster/backup-basic-backup-schedule-nfs-2025-05-29t01-06-00-qrwwj to node4
  Normal  Pulled     6m50s  kubelet            Container image "m.daocloud.io/docker.io/pingcap/br:v8.5.0" already present on machine
  Normal  Created    6m50s  kubelet            Created container br
  Normal  Started    6m49s  kubelet            Started container br
  Normal  Pulled     6m49s  kubelet            Container image "m.daocloud.io/docker.io/pingcap/tidb-backup-manager:v1.6.1" already present on machine
  Normal  Created    6m49s  kubelet            Created container backup
  Normal  Started    6m48s  kubelet            Started container backup

kubectl -n tidb-cluster logs -f backup-basic-backup-schedule-nfs-2025-05-29t01-24-00-lp7hc

这个log 与我最初发的log 无明显区别

感觉像是backups这个crd的问题,看看这个yaml

非常感谢这么耐心帮我排查!

我也正在翻operator 代码,但我对go 并不是很熟悉,可能会有点慢
下面我继续提供一些现场信息,先提供CRD backup 的定义信息,再提供CRD backup 对应的实例信息


这些是k8s 集群上与tidb 相关的CRD

root@node1:~/ben.wangz/temp# kubectl get crd | grep pingcap
backups.pingcap.com                                            2025-05-16T06:42:46Z
backupschedules.pingcap.com                                    2025-05-16T06:42:46Z
dmclusters.pingcap.com                                         2025-05-16T06:42:46Z
restores.pingcap.com                                           2025-05-16T06:42:46Z
tidbclusterautoscalers.pingcap.com                             2025-05-16T06:42:46Z
tidbclusters.pingcap.com                                       2025-05-16T06:42:46Z
tidbdashboards.pingcap.com                                     2025-05-16T06:42:46Z
tidbinitializers.pingcap.com                                   2025-05-16T06:42:46Z
tidbmonitors.pingcap.com                                       2025-05-16T06:42:46Z
tidbngmonitorings.pingcap.com                                  2025-05-16T06:42:46Z
volumebackups.federation.pingcap.com                           2025-05-16T06:42:46Z
volumebackupschedules.federation.pingcap.com                   2025-05-16T06:42:46Z
volumerestores.federation.pingcap.com                          2025-05-16T06:42:46Z

CRD 的yaml 定义太长了,我是通过argocd 来维护的,可以通过这个追溯来源

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: tidb-operator-crd
  namespace: argocd
spec:
  syncPolicy:
    syncOptions:
      - ServerSideApply=true 
  project: default
  source:
    repoURL: https://gitee.com/ben-wangz-mirror/tidb-operator.git
    targetRevision: v1.6.1
    path: manifests/crd
    directory:
      recurse: true
  destination:
    server: https://kubernetes.default.svc
    namespace: default

因此,对应的直接代码在

这个git repo 克隆自 https://github.com/pingcap/tidb-operator.git ,因为用的是tag v1.6.1 应该不会有变更。


集群上的backup 实例如下

root@node1:~/ben.wangz/temp# kubectl -n tidb-cluster get backup
NAME                                            TYPE   MODE       STATUS      BACKUPPATH                                                                                         BACKUPSIZE   COMMITTS             LOGTRUNCATEUNTIL   TIMETAKEN   AGE
backup-tidb-cluster-basic-full-1748228371       full   snapshot   Complete    local:///backup/tidb-cluster/basic/full/1748228371                                                 442 kB       458313748224409601                      5s          43h
basic-backup-schedule-nfs-2025-05-29t01-42-00   full   snapshot   Failed      local:///backup/tidb-cluster/basic/full/scheduled/basic-pd.tidb-cluster-2379-2025-05-29t01-42-00                                                                    49m
basic-backup-schedule-nfs-2025-05-29t02-00-00   full   snapshot   Failed      local:///backup/tidb-cluster/basic/full/scheduled/basic-pd.tidb-cluster-2379-2025-05-29t02-00-00                                                                    31m
basic-backup-schedule-nfs-2025-05-29t02-18-00   full   snapshot   Scheduled   local:///backup/tidb-cluster/basic/full/scheduled/basic-pd.tidb-cluster-2379-2025-05-29t02-18-00                                                                    13m

describe 最新的“处于scheduled 状态”的backup

root@node1:~/ben.wangz/temp# kubectl -n tidb-cluster describe backup basic-backup-schedule-nfs-2025-05-29t02-18-00
Name:         basic-backup-schedule-nfs-2025-05-29t02-18-00
Namespace:    tidb-cluster
Labels:       app.kubernetes.io/instance=basic-backup-schedule-nfs
              app.kubernetes.io/managed-by=backup-schedule-operator
              app.kubernetes.io/name=backup-schedule
              tidb.pingcap.com/backup-schedule=basic-backup-schedule-nfs
Annotations:  <none>
API Version:  pingcap.com/v1alpha1
Kind:         Backup
Metadata:
  Creation Timestamp:  2025-05-29T02:20:40Z
  Generation:          9
  Owner References:
    API Version:           pingcap.com/v1alpha1
    Block Owner Deletion:  true
    Controller:            true
    Kind:                  BackupSchedule
    Name:                  basic-backup-schedule-nfs
    UID:                   e6ab694d-7a84-4ec0-8ef9-dbbaf8839c87
  Resource Version:        52849149
  UID:                     7d5a3183-20cf-4ac6-b127-fc8c2c3d6aec
Spec:
  Backoff Retry Policy:
    Max Retry Times:     2
    Min Retry Duration:  300s
    Retry Timeout:       30m
  Backup Mode:           snapshot
  Backup Type:           full
  Br:
    Cluster:            basic
    Cluster Namespace:  tidb-cluster
    Concurrency:        4
    Log Level:          info
  Calc Size Level:      all
  Clean Policy:         Retain
  Local:
    Prefix:  tidb-cluster/basic/full/scheduled/basic-pd.tidb-cluster-2379-2025-05-29t02-18-00
    Volume:
      Name:  backup
      Persistent Volume Claim:
        Claim Name:  tidb-cluster-backup-pvc
    Volume Mount:
      Mount Path:  /backup
      Name:        backup
  Resources:
    Limits:
      Cpu:     1
      Memory:  1Gi
    Requests:
      Cpu:                                    500m
      Memory:                                 512Mi
  Tool Image:                                 m.daocloud.io/docker.io/pingcap/br:v8.5.0
  Volume Backup Init Job Max Active Seconds:  600
Status:
  Backoff Retry Status:
    Detect Failed At:   2025-05-29T02:21:10Z
    Expected Retry At:  2025-05-29T02:26:10Z
    Original Reason:    BackoffLimitExceeded
    Real Retry At:      2025-05-29T02:26:40Z
    Retry Num:          1
    Retry Reason:       Job backup-basic-backup-schedule-nfs-2025-05-29t02-18-00 has failed
    Detect Failed At:   2025-05-29T02:27:10Z
    Expected Retry At:  2025-05-29T02:37:10Z
    Original Reason:    BackoffLimitExceeded
    Retry Num:          2
    Retry Reason:       Job backup-basic-backup-schedule-nfs-2025-05-29t02-18-00 has failed
  Backup Path:          local:///backup/tidb-cluster/basic/full/scheduled/basic-pd.tidb-cluster-2379-2025-05-29t02-18-00
  Conditions:
    Last Transition Time:  2025-05-29T02:26:41Z
    Status:                True
    Type:                  Scheduled
    Last Transition Time:  2025-05-29T02:20:44Z
    Status:                True
    Type:                  Prepare
    Last Transition Time:  2025-05-29T02:26:40Z
    Message:               reason Job backup-basic-backup-schedule-nfs-2025-05-29t02-18-00 has failed, original reason BackoffLimitExceeded
    Reason:                RetryFailedBackup
    Status:                True
    Type:                  RetryFailed
    Last Transition Time:  2025-05-29T02:26:44Z
    Status:                True
    Type:                  Restart
  Phase:                   Scheduled
  Time Completed:          <nil>
  Time Started:            <nil>
Events:
  Type    Reason            Age                 From                     Message
  ----    ------            ----                ----                     -------
  Normal  SuccessfulCreate  15m                 tidb-controller-manager  create Backup tidb-cluster/basic-backup-schedule-nfs-2025-05-29t02-18-00 for backupSchedule/basic-backup-schedule-nfs successful
  Normal  SuccessfulDelete  9m10s               tidb-controller-manager  delete job tidb-cluster/backup-basic-backup-schedule-nfs-2025-05-29t02-18-00 for cluster basic-backup-schedule-nfs  successful
  Normal  SuccessfulCreate  9m9s (x2 over 15m)  tidb-controller-manager  create job tidb-cluster/backup-basic-backup-schedule-nfs-2025-05-29t02-18-00 for cluster basic-backup-schedule-nfs backup successful

你的K8S版本及operator的版本是多少?

root@node1:~/ben.wangz/temp# kubectl version
Client Version: v1.28.10
Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3
Server Version: v1.28.10

operator 的版本是v1.6.1,详细配置如下


apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: tidb-operator
spec:
  syncPolicy:
    syncOptions:
    - CreateNamespace=true
  project: default
  source:
    repoURL: https://charts.pingcap.org/
    chart: tidb-operator
    targetRevision: v1.6.1
    helm:
      releaseName: tidb
      valuesObject:
        timezone: Asia/Shanghai
        operatorImage: m.daocloud.io/docker.io/pingcap/tidb-operator:v1.6.1
        tidbBackupManagerImage: m.daocloud.io/docker.io/pingcap/tidb-backup-manager:v1.6.1
        scheduler:
          kubeSchedulerImageName: m.daocloud.io/registry.k8s.io/kube-scheduler
        advancedStatefulset:
          image: m.daocloud.io/pingcap/advanced-statefulset:v0.7.0
  destination:
    server: https://kubernetes.default.svc
    namespace: tidb-admin

这个再加个-c backup看看输出是否跟之前一样

一样的,default 就是 backup 这个container


root@node1:~/ben.wangz/temp# kubectl -n tidb-cluster logs -f backup-basic-backup-schedule-nfs-2025-05-29t03-30-00-llh8l
Defaulted container "backup" out of: backup, br (init)
Create rclone.conf file.
/tidb-backup-manager backup --namespace=tidb-cluster --backupName=basic-backup-schedule-nfs-2025-05-29t03-30-00 --tikvVersion=v8.5.0 --mode=snapshot
E0529 11:38:44.382332       9 reflector.go:147] k8s.io/client-go@v0.28.14/tools/cache/reflector.go:229: Failed to watch *v1alpha1.Backup: unknown (get backups.pingcap.com)
I0529 11:38:44.453491       9 backup.go:78] start to process backup tidb-cluster/basic-backup-schedule-nfs-2025-05-29t03-30-00
I0529 11:38:44.459468       9 manager.go:109] start to process backup: {"kind":"Backup","apiVersion":"pingcap.com/v1alpha1","metadata":{"name":"basic-backup-schedule-nfs-2025-05-29t03-30-00","namespace":"tidb-cluster","uid":"499f4d35-eca4-4f41-a6d2-ae2108a3a6fa","resourceVersion":"52870610","generation":7,"creationTimestamp":"2025-05-29T03:32:41Z","labels":{"app.kubernetes.io/instance":"basic-backup-schedule-nfs","app.kubernetes.io/managed-by":"backup-schedule-operator","app.kubernetes.io/name":"backup-schedule","tidb.pingcap.com/backup-schedule":"basic-backup-schedule-nfs"},"annotations":{"kubectl.kubernetes.io/last-applied-configuration":"{\"apiVersion\":\"pingcap.com/v1alpha1\",\"kind\":\"BackupSchedule\",\"metadata\":{\"annotations\":{},\"name\":\"basic-backup-schedule-nfs\",\"namespace\":\"tidb-cluster\"},\"spec\":{\"backupTemplate\":{\"backupMode\":\"snapshot\",\"backupType\":\"full\",\"br\":{\"cluster\":\"basic\",\"clusterNamespace\":\"tidb-cluster\",\"concurrency\":4,\"logLevel\":\"info\"},\"cleanPolicy\":\"Retain\",\"local\":{\"prefix\":\"tidb-cluster/basic/full/scheduled\",\"volume\":{\"name\":\"backup\",\"persistentVolumeClaim\":{\"claimName\":\"tidb-cluster-backup-pvc\"}},\"volumeMount\":{\"mountPath\":\"/backup\",\"name\":\"backup\"}},\"resources\":{\"limits\":{\"cpu\":\"1000m\",\"memory\":\"1Gi\"},\"requests\":{\"cpu\":\"500m\",\"memory\":\"512Mi\"}},\"toolImage\":\"m.daocloud.io/docker.io/pingcap/br:v8.5.0\"},\"maxBackups\":3,\"pause\":false,\"schedule\":\"*/3 * * * *\"}}\n"},"ownerReferences":[{"apiVersion":"pingcap.com/v1alpha1","kind":"BackupSchedule","name":"basic-backup-schedule-nfs","uid":"e6ab694d-7a84-4ec0-8ef9-dbbaf8839c87","controller":true,"blockOwnerDeletion":true}],"managedFields":[{"manager":"tidb-backup-manager","operation":"Update","apiVersion":"pingcap.com/v1alpha1","time":"2025-05-29T03:32:44Z","fieldsType":"FieldsV1","fieldsV1":{"f:status":{"f:backupPath":{}}}},{"manager":"tidb-controller-manager","operation":"Update","apiVersion":"pingcap.com/v1alpha1","time":"2025-05-29T03:38:41Z","fieldsType":"FieldsV1","fieldsV1":{"f:metadata":{"f:annotations":{".":{},"f:kubectl.kubernetes.io/last-applied-configuration":{}},"f:labels":{".":{},"f:app.kubernetes.io/instance":{},"f:app.kubernetes.io/managed-by":{},"f:app.kubernetes.io/name":{},"f:tidb.pingcap.com/backup-schedule":{}},"f:ownerReferences":{".":{},"k:{\"uid\":\"e6ab694d-7a84-4ec0-8ef9-dbbaf8839c87\"}":{}}},"f:spec":{".":{},"f:backoffRetryPolicy":{".":{},"f:maxRetryTimes":{},"f:minRetryDuration":{},"f:retryTimeout":{}},"f:backupMode":{},"f:backupType":{},"f:br":{".":{},"f:cluster":{},"f:clusterNamespace":{},"f:concurrency":{},"f:logLevel":{}},"f:calcSizeLevel":{},"f:cleanPolicy":{},"f:local":{".":{},"f:prefix":{},"f:volume":{".":{},"f:name":{},"f:persistentVolumeClaim":{".":{},"f:claimName":{}}},"f:volumeMount":{".":{},"f:mountPath":{},"f:name":{}}},"f:resources":{".":{},"f:limits":{".":{},"f:cpu":{},"f:memory":{}},"f:requests":{".":{},"f:cpu":{},"f:memory":{}}},"f:toolImage":{},"f:volumeBackupInitJobMaxActiveSeconds":{}},"f:status":{".":{},"f:backoffRetryStatus":{},"f:conditions":{},"f:phase":{},"f:timeCompleted":{},"f:timeStarted":{}}}}]},"spec":{"resources":{"limits":{"cpu":"1","memory":"1Gi"},"requests":{"cpu":"500m","memory":"512Mi"}},"backupType":"full","backupMode":"snapshot","local":{"volume":{"name":"backup","persistentVolumeClaim":{"claimName":"tidb-cluster-backup-pvc"}},"volumeMount":{"name":"backup","mountPath":"/backup"},"prefix":"tidb-cluster/basic/full/scheduled/basic-pd.tidb-cluster-2379-2025-05-29t03-30-00"},"br":{"cluster":"basic","clusterNamespace":"tidb-cluster","logLevel":"info","concurrency":4},"calcSizeLevel":"all","toolImage":"m.daocloud.io/docker.io/pingcap/br:v8.5.0","cleanPolicy":"Retain","backoffRetryPolicy":{"minRetryDuration":"300s","maxRetryTimes":2,"retryTimeout":"30m"},"volumeBackupInitJobMaxActiveSeconds":600},"status":{"backupPath":"local:///backup/tidb-cluster/basic/full/scheduled/basic-pd.tidb-cluster-2379-2025-05-29t03-30-00","timeStarted":null,"timeCompleted":null,"phase":"Scheduled","conditions":[{"type":"Scheduled","status":"True","lastTransitionTime":"2025-05-29T03:38:41Z"},{"type":"Prepare","status":"True","lastTransitionTime":"2025-05-29T03:32:44Z"},{"type":"RetryFailed","status":"True","lastTransitionTime":"2025-05-29T03:38:41Z","reason":"RetryFailedBackup","message":"reason Job backup-basic-backup-schedule-nfs-2025-05-29t03-30-00 has failed, original reason BackoffLimitExceeded"},{"type":"Restart","status":"True","lastTransitionTime":"2025-05-29T03:38:41Z"}],"backoffRetryStatus":[{"retryNum":1,"detectFailedAt":"2025-05-29T03:33:11Z","expectedRetryAt":"2025-05-29T03:38:11Z","realRetryAt":"2025-05-29T03:38:41Z","retryReason":"Job backup-basic-backup-schedule-nfs-2025-05-29t03-30-00 has failed","originalReason":"BackoffLimitExceeded"}]}}
I0529 11:38:44.459531       9 manager.go:115] snapshot backup tidb-cluster/basic-backup-schedule-nfs-2025-05-29t03-30-00 was restarted, status is Scheduled
I0529 11:38:44.481072       9 backup_status_updater.go:128] Backup: [tidb-cluster/basic-backup-schedule-nfs-2025-05-29t03-30-00] updated successfully
E0529 11:38:44.493153       9 backup_status_updater.go:131] Failed to update backup [tidb-cluster/basic-backup-schedule-nfs-2025-05-29t03-30-00], error: Operation cannot be fulfilled on backups.pingcap.com "basic-backup-schedule-nfs-2025-05-29t03-30-00": the object has been modified; please apply your changes to the latest version and try again
E0529 11:38:44.519017       9 backup_status_updater.go:131] Failed to update backup [tidb-cluster/basic-backup-schedule-nfs-2025-05-29t03-30-00], error: Operation cannot be fulfilled on backups.pingcap.com "basic-backup-schedule-nfs-2025-05-29t03-30-00": the object has been modified; please apply your changes to the latest version and try again
E0529 11:38:44.543824       9 backup_status_updater.go:131] Failed to update backup [tidb-cluster/basic-backup-schedule-nfs-2025-05-29t03-30-00], error: Operation cannot be fulfilled on backups.pingcap.com "basic-backup-schedule-nfs-2025-05-29t03-30-00": the object has been modified; please apply your changes to the latest version and try again
E0529 11:38:44.569630       9 backup_status_updater.go:131] Failed to update backup [tidb-cluster/basic-backup-schedule-nfs-2025-05-29t03-30-00], error: Operation cannot be fulfilled on backups.pingcap.com "basic-backup-schedule-nfs-2025-05-29t03-30-00": the object has been modified; please apply your changes to the latest version and try again
E0529 11:38:44.594893       9 backup_status_updater.go:131] Failed to update backup [tidb-cluster/basic-backup-schedule-nfs-2025-05-29t03-30-00], error: Operation cannot be fulfilled on backups.pingcap.com "basic-backup-schedule-nfs-2025-05-29t03-30-00": the object has been modified; please apply your changes to the latest version and try again
Error from server (Conflict): Operation cannot be fulfilled on backups.pingcap.com "basic-backup-schedule-nfs-2025-05-29t03-30-00": the object has been modified; please apply your changes to the latest version and try again
Sleeping for 10 seconds before exit...
root@node1:~/ben.wangz/temp# kubectl -n tidb-cluster logs -f backup-basic-backup-schedule-nfs-2025-05-29t03-30-00-llh8l -c backup
Create rclone.conf file.
/tidb-backup-manager backup --namespace=tidb-cluster --backupName=basic-backup-schedule-nfs-2025-05-29t03-30-00 --tikvVersion=v8.5.0 --mode=snapshot
E0529 11:38:44.382332       9 reflector.go:147] k8s.io/client-go@v0.28.14/tools/cache/reflector.go:229: Failed to watch *v1alpha1.Backup: unknown (get backups.pingcap.com)
I0529 11:38:44.453491       9 backup.go:78] start to process backup tidb-cluster/basic-backup-schedule-nfs-2025-05-29t03-30-00
I0529 11:38:44.459468       9 manager.go:109] start to process backup: {"kind":"Backup","apiVersion":"pingcap.com/v1alpha1","metadata":{"name":"basic-backup-schedule-nfs-2025-05-29t03-30-00","namespace":"tidb-cluster","uid":"499f4d35-eca4-4f41-a6d2-ae2108a3a6fa","resourceVersion":"52870610","generation":7,"creationTimestamp":"2025-05-29T03:32:41Z","labels":{"app.kubernetes.io/instance":"basic-backup-schedule-nfs","app.kubernetes.io/managed-by":"backup-schedule-operator","app.kubernetes.io/name":"backup-schedule","tidb.pingcap.com/backup-schedule":"basic-backup-schedule-nfs"},"annotations":{"kubectl.kubernetes.io/last-applied-configuration":"{\"apiVersion\":\"pingcap.com/v1alpha1\",\"kind\":\"BackupSchedule\",\"metadata\":{\"annotations\":{},\"name\":\"basic-backup-schedule-nfs\",\"namespace\":\"tidb-cluster\"},\"spec\":{\"backupTemplate\":{\"backupMode\":\"snapshot\",\"backupType\":\"full\",\"br\":{\"cluster\":\"basic\",\"clusterNamespace\":\"tidb-cluster\",\"concurrency\":4,\"logLevel\":\"info\"},\"cleanPolicy\":\"Retain\",\"local\":{\"prefix\":\"tidb-cluster/basic/full/scheduled\",\"volume\":{\"name\":\"backup\",\"persistentVolumeClaim\":{\"claimName\":\"tidb-cluster-backup-pvc\"}},\"volumeMount\":{\"mountPath\":\"/backup\",\"name\":\"backup\"}},\"resources\":{\"limits\":{\"cpu\":\"1000m\",\"memory\":\"1Gi\"},\"requests\":{\"cpu\":\"500m\",\"memory\":\"512Mi\"}},\"toolImage\":\"m.daocloud.io/docker.io/pingcap/br:v8.5.0\"},\"maxBackups\":3,\"pause\":false,\"schedule\":\"*/3 * * * *\"}}\n"},"ownerReferences":[{"apiVersion":"pingcap.com/v1alpha1","kind":"BackupSchedule","name":"basic-backup-schedule-nfs","uid":"e6ab694d-7a84-4ec0-8ef9-dbbaf8839c87","controller":true,"blockOwnerDeletion":true}],"managedFields":[{"manager":"tidb-backup-manager","operation":"Update","apiVersion":"pingcap.com/v1alpha1","time":"2025-05-29T03:32:44Z","fieldsType":"FieldsV1","fieldsV1":{"f:status":{"f:backupPath":{}}}},{"manager":"tidb-controller-manager","operation":"Update","apiVersion":"pingcap.com/v1alpha1","time":"2025-05-29T03:38:41Z","fieldsType":"FieldsV1","fieldsV1":{"f:metadata":{"f:annotations":{".":{},"f:kubectl.kubernetes.io/last-applied-configuration":{}},"f:labels":{".":{},"f:app.kubernetes.io/instance":{},"f:app.kubernetes.io/managed-by":{},"f:app.kubernetes.io/name":{},"f:tidb.pingcap.com/backup-schedule":{}},"f:ownerReferences":{".":{},"k:{\"uid\":\"e6ab694d-7a84-4ec0-8ef9-dbbaf8839c87\"}":{}}},"f:spec":{".":{},"f:backoffRetryPolicy":{".":{},"f:maxRetryTimes":{},"f:minRetryDuration":{},"f:retryTimeout":{}},"f:backupMode":{},"f:backupType":{},"f:br":{".":{},"f:cluster":{},"f:clusterNamespace":{},"f:concurrency":{},"f:logLevel":{}},"f:calcSizeLevel":{},"f:cleanPolicy":{},"f:local":{".":{},"f:prefix":{},"f:volume":{".":{},"f:name":{},"f:persistentVolumeClaim":{".":{},"f:claimName":{}}},"f:volumeMount":{".":{},"f:mountPath":{},"f:name":{}}},"f:resources":{".":{},"f:limits":{".":{},"f:cpu":{},"f:memory":{}},"f:requests":{".":{},"f:cpu":{},"f:memory":{}}},"f:toolImage":{},"f:volumeBackupInitJobMaxActiveSeconds":{}},"f:status":{".":{},"f:backoffRetryStatus":{},"f:conditions":{},"f:phase":{},"f:timeCompleted":{},"f:timeStarted":{}}}}]},"spec":{"resources":{"limits":{"cpu":"1","memory":"1Gi"},"requests":{"cpu":"500m","memory":"512Mi"}},"backupType":"full","backupMode":"snapshot","local":{"volume":{"name":"backup","persistentVolumeClaim":{"claimName":"tidb-cluster-backup-pvc"}},"volumeMount":{"name":"backup","mountPath":"/backup"},"prefix":"tidb-cluster/basic/full/scheduled/basic-pd.tidb-cluster-2379-2025-05-29t03-30-00"},"br":{"cluster":"basic","clusterNamespace":"tidb-cluster","logLevel":"info","concurrency":4},"calcSizeLevel":"all","toolImage":"m.daocloud.io/docker.io/pingcap/br:v8.5.0","cleanPolicy":"Retain","backoffRetryPolicy":{"minRetryDuration":"300s","maxRetryTimes":2,"retryTimeout":"30m"},"volumeBackupInitJobMaxActiveSeconds":600},"status":{"backupPath":"local:///backup/tidb-cluster/basic/full/scheduled/basic-pd.tidb-cluster-2379-2025-05-29t03-30-00","timeStarted":null,"timeCompleted":null,"phase":"Scheduled","conditions":[{"type":"Scheduled","status":"True","lastTransitionTime":"2025-05-29T03:38:41Z"},{"type":"Prepare","status":"True","lastTransitionTime":"2025-05-29T03:32:44Z"},{"type":"RetryFailed","status":"True","lastTransitionTime":"2025-05-29T03:38:41Z","reason":"RetryFailedBackup","message":"reason Job backup-basic-backup-schedule-nfs-2025-05-29t03-30-00 has failed, original reason BackoffLimitExceeded"},{"type":"Restart","status":"True","lastTransitionTime":"2025-05-29T03:38:41Z"}],"backoffRetryStatus":[{"retryNum":1,"detectFailedAt":"2025-05-29T03:33:11Z","expectedRetryAt":"2025-05-29T03:38:11Z","realRetryAt":"2025-05-29T03:38:41Z","retryReason":"Job backup-basic-backup-schedule-nfs-2025-05-29t03-30-00 has failed","originalReason":"BackoffLimitExceeded"}]}}
I0529 11:38:44.459531       9 manager.go:115] snapshot backup tidb-cluster/basic-backup-schedule-nfs-2025-05-29t03-30-00 was restarted, status is Scheduled
I0529 11:38:44.481072       9 backup_status_updater.go:128] Backup: [tidb-cluster/basic-backup-schedule-nfs-2025-05-29t03-30-00] updated successfully
E0529 11:38:44.493153       9 backup_status_updater.go:131] Failed to update backup [tidb-cluster/basic-backup-schedule-nfs-2025-05-29t03-30-00], error: Operation cannot be fulfilled on backups.pingcap.com "basic-backup-schedule-nfs-2025-05-29t03-30-00": the object has been modified; please apply your changes to the latest version and try again
E0529 11:38:44.519017       9 backup_status_updater.go:131] Failed to update backup [tidb-cluster/basic-backup-schedule-nfs-2025-05-29t03-30-00], error: Operation cannot be fulfilled on backups.pingcap.com "basic-backup-schedule-nfs-2025-05-29t03-30-00": the object has been modified; please apply your changes to the latest version and try again
E0529 11:38:44.543824       9 backup_status_updater.go:131] Failed to update backup [tidb-cluster/basic-backup-schedule-nfs-2025-05-29t03-30-00], error: Operation cannot be fulfilled on backups.pingcap.com "basic-backup-schedule-nfs-2025-05-29t03-30-00": the object has been modified; please apply your changes to the latest version and try again
E0529 11:38:44.569630       9 backup_status_updater.go:131] Failed to update backup [tidb-cluster/basic-backup-schedule-nfs-2025-05-29t03-30-00], error: Operation cannot be fulfilled on backups.pingcap.com "basic-backup-schedule-nfs-2025-05-29t03-30-00": the object has been modified; please apply your changes to the latest version and try again
E0529 11:38:44.594893       9 backup_status_updater.go:131] Failed to update backup [tidb-cluster/basic-backup-schedule-nfs-2025-05-29t03-30-00], error: Operation cannot be fulfilled on backups.pingcap.com "basic-backup-schedule-nfs-2025-05-29t03-30-00": the object has been modified; please apply your changes to the latest version and try again
Error from server (Conflict): Operation cannot be fulfilled on backups.pingcap.com "basic-backup-schedule-nfs-2025-05-29t03-30-00": the object has been modified; please apply your changes to the latest version and try again
Sleeping for 10 seconds before exit...

但是 br 这个container 好像不太正常,backup-basic-backup-schedule-nfs-2025-05-29t03-30-00-llh8l 他在找自己,但是没找到?

root@node1:~/ben.wangz/temp# kubectl -n tidb-cluster logs -f backup-basic-backup-schedule-nfs-2025-05-29t03-30-00-llh8l -c br
Error from server (NotFound): pods "backup-basic-backup-schedule-nfs-2025-05-29t03-30-00-llh8l" not found

br 是initcontainer,跑完就结束了

我看已经有了一个backup-tidb-cluster-basic-full-1748228371成功了,
basic-backup-schedule-nfs 这个是自己手动添加的?

成功的是自己构建的 Backup,配置如下,

---
apiVersion: pingcap.com/v1alpha1
kind: Backup
metadata:
  name: backup-tidb-cluster-basic-full-1748228371
  namespace: tidb-cluster
spec:
  cleanPolicy: Retain
  resources:
    requests:
      cpu: "500m"
      memory: "512Mi"
    limits:
      cpu: "1000m"
      memory: "1Gi"
  backupMode: snapshot
  backupType: full
  toolImage: m.daocloud.io/docker.io/pingcap/br:v8.5.0
  br:
    cluster: basic
    clusterNamespace: tidb-cluster
    logLevel: info
    concurrency: 4
    # rateLimit: 0
    # options:
    # - --lastbackupts=420134118382108673
  local:
    prefix: tidb-cluster/basic/full/1748228371
    volume:
      name: backup
      persistentVolumeClaim:
        claimName: tidb-cluster-backup-pvc
    volumeMount:
      name: backup
      mountPath: /backup

一直在失败的是BackupSchedule 产生的 Backup

apiVersion: pingcap.com/v1alpha1
kind: BackupSchedule
metadata:
  name: basic-backup-schedule-nfs
  namespace: tidb-cluster
spec:
  maxBackups: 3
  pause: false
  schedule: "*/3 * * * *"
  backupTemplate:
    cleanPolicy: Retain
    resources:
      requests:
        cpu: "500m"
        memory: "512Mi"
      limits:
        cpu: "1000m"
        memory: "1Gi"
    backupMode: snapshot
    backupType: full
    toolImage: m.daocloud.io/docker.io/pingcap/br:v8.5.0
    br:
      cluster: basic
      clusterNamespace: tidb-cluster
      logLevel: info
      concurrency: 4
      # rateLimit: 0
      # checksum: true
    local:
      prefix: tidb-cluster/basic/full/scheduled
      volume:
        name: backup
        persistentVolumeClaim:
          claimName: tidb-cluster-backup-pvc
      volumeMount:
        name: backup
        mountPath: /backup

kubectl -n tidb-cluster logs 失败pod