kubernetes - GKE 集群的 velero 备份失败

标签 kubernetes backup google-kubernetes-engine velero

我正在尝试使用 velero 创建 GKE Cluster 的备份。我在 GKE 集群 上成功安装,如下所示

   $ kubectl get deployment/velero --namespace velero
   NAME     READY   UP-TO-DATE   AVAILABLE   AGE
   velero   1/1     1            1           43h 

   $ kubectl get pods --namespace velero
   NAME                      READY   STATUS    RESTARTS    AGE
   velero-847c69f497-hwv6l   1/1     Running     0          43h  

我执行了以下命令来启动备份

  $ velero backup create cluster1-backup --include-namespaces default --snapshot-volumes
  Backup request "cluster1-backup" submitted successfully.
  Run `velero backup describe cluster1-backup` or `velero backup logs cluster1-backup` for more details.

看起来备份过程失败

  $ velero backup describe cluster1-backup
   Name:         cluster1-backup
   Namespace:    velero
   Labels:       velero.io/storage-location=default
   Annotations:  velero.io/source-cluster-k8s-gitversion=v1.15.12-gke.20
   velero.io/source-cluster-k8s-major-version=1
   velero.io/source-cluster-k8s-minor-version=15+

   Phase:  Failed (run `velero backup logs cluster1-backup` for more information)

   Errors:    0
   Warnings:  0

   Namespaces:
   Included:  default
   Excluded:  <none>

   Resources:
   Included:        *
   Excluded:        <none>
   Cluster-scoped:  auto
   Label selector:  <none>
   Storage Location:  default
   Velero-Native Snapshot PVs:  true
   TTL:  720h0m0s
   Hooks:  <none>
   Backup Format Version:  1.1.0

   Started:    2020-10-05 09:57:12 +0000 UTC
   Completed:  <n/a>

   Expiration:  2020-11-04 09:57:12 +0000 UTC
   Velero-Native Snapshots: <none included>

  $ velero get backups
  NAME              STATUS   ERRORS   WARNINGS   CREATED  EXPIRES   STORAGE LOCATION   SELECTOR
 cluster1-backup    Failed   0        0     2020-10-05 09:57:12 +0000 UTC   29d default        <none>

日志显示以下内容

$ velero backup logs cluster1-backup
An error occurred: timed out waiting for download URL

我在 SharedVPC 上使用公共(public) GKE 集群,且仅启用了主授权网络 35.235.240.0/20。有解决问题的建议吗?

最佳答案

问题现已解决

在日志中看到以下错误

 kubectl logs deployment/velero -n velero
 

time="2020-10-05T13:41:19Z"level=error msg="获取此位置的备份存储时出错"backupLocation=defaultcontroller=backup-sync error="备份存储位置的存储桶名称\“gs://bucketname/\”不得包含“/”(如果使用前缀,请将其放入“前缀”字段中)” error.file="/go/src/github.com/vmware-tanzu/velero/pkg/persistence/object_store.go:110"error.function=github.com/vmware-tanzu/velero/pkg/persistence.NewObjectBackupStore logSource="pkg/controller/backup_sync_controller.go:168"

创建环境变量时,存储桶名称后面有一个“/”

看来创建环境变量时,我们不必在环境变量中添加“gs://”。

            BUCKET=bucketname

如果存储桶不存在,请创建存储桶,如下所示

  gsutil mb gs://$BUCKET/

在安装 velero 服务器期间,请勿在 velero install 命令中的存储桶名称前添加 gs://,如下所示

 velero install --provider gcp --plugins velero/velero-plugin-for-gcp:v1.1.0 --bucket $BUCKET  --secret-file ./credentials-velero

BUCKET=bucketname

$ velero backup describe backup-test-ns
Name:         backup-test-ns
Namespace:    velero
Labels:       <none>
Annotations:  <none>

Phase:  New

Errors:    0
Warnings:  0

Namespaces:
   Included:  backup-test
   Excluded:  <none>

 Resources:
    Included:        *
    Excluded:        <none>
    Cluster-scoped:  auto

 Label selector:  <none>

 Storage Location:

 Velero-Native Snapshot PVs:  auto

 TTL:  720h0m0s

 Hooks:  <none>

 Backup Format Version:

 Started:    <n/a>
 Completed:  <n/a>

 Expiration:  <nil>

 Velero-Native Snapshots: <none included>

在尝试新安装之前,您可能需要删除现有的 velero 安装。要卸载velero,请使用以下命令

      kubectl delete namespace -n velero

关于kubernetes - GKE 集群的 velero 备份失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64207390/

相关文章:

Kubernetes:使用 kubectl 修改 secret ?

postgresql - pg_dump 9.0 到 pg_restore 8.3

kubernetes - 如何在 GKE 上克隆或预填充 PVC?

google-kubernetes-engine - 在 GCP Cloud Container Builder 中推送镜像后添加步骤

docker - 代理背后的 Kubernetes Docker 容器

kubernetes - 有没有办法不使用 GKE 的标准负载均衡器?

数据库备份最佳实践

transactions - 如果 Redis 在事务中间触发快照怎么办?

python - 带有 GKE 的 GCS,403 写入 GCS 存储桶的权限不足

kubernetes - 来自服务器的错误(禁止): Forbidden (user=system:anonymous, 动词 = 获取,