我正在尝试将 Google Filestore 备份到 GCS 存储桶。我还想将主要区域中文件存储的内容同步到次要区域中的另一个文件存储。
为此,我创建了一个在计算引擎 VM 中运行良好的 bash 脚本。我已将其转换为 docker 容器,我在 GKE 集群中作为 kubernetes cronjob 运行。
但是当我在 GKE pod 中运行脚本时,它给了我以下错误:
root@filestore-backup-1594023480-k9wmn:/# mount 10.52.219.10:/vol1 /mnt/filestore-primary
mount.nfs: access denied by server while mounting 10.52.219.10:/vol1
我能够从容器连接到文件存储:
root@filestore-backup-1594023480-k9wmn:/# telnet 10.52.219.10 111
Trying 10.52.219.10...
Connected to 10.52.219.10.
Escape character is '^]'.
pod ip 范围也会添加到 VPC ip 范围。Filestore 已获得完全访问权限以允许 VPC。相同的脚本在计算引擎 VM 中运行良好。
为什么在 GKE pod 中安装 google 文件存储不起作用?
用于备份谷歌文件存储的 bash 脚本:
#!/bin/bash
# Create the GCloud Authentication file if set
touch /root/gcloud.json
echo "$GCP_GCLOUD_AUTH" > /root/gcloud.json
gcloud auth activate-service-account --key-file=/root/gcloud.json
#backup filestore to GCS
DATE=$(date +"%m-%d-%Y-%T")
mkdir -p /mnt/$FILESHARE_MOUNT_PRIMARY
mount $FILESTORE_IP_PRIMARY:/$FILESHARE_NAME_PRIMARY /mnt/$FILESHARE_MOUNT_PRIMARY
gsutil rsync -r /mnt/$FILESHARE_MOUNT_PRIMARY/ gs://$GCP_BUCKET_NAME/$DATE/
#rsync filestore to secondary region
mkdir -p /mnt/$FILESHARE_MOUNT_SECONDARY
mount $FILESTORE_IP_SECONDARY:/$FILESHARE_NAME_SECONDARY /mnt/$FILESHARE_MOUNT_SECONDARY
rsync -avz /mnt/$FILESHARE_MOUNT_PRIMARY/ /mnt/$FILESHARE_MOUNT_SECONDARY/
所有的变量都在 yaml 中作为环境变量传递。