我试图采取谷歌文件存储备份到一个GCS桶。我也想rsync的内容在主区域的文件存储到另一个文件存储在辅助区域。
为此,我创建了一个bash脚本,它在计算引擎VM中运行良好。我已经将其转换为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中的环境变量传递。
1条答案
按热度按时间zujrkrfu1#
您无法访问它的原因是因为GKE与其他GCP示例使用不同的方法来消耗文件存储,为了能够挂载,您必须创建持久卷和持久卷声明。
storageClass
为每次访问动态地提供PV和PVC。您可以遵循以下指南:选择你的道路,如果你有任何问题,让我知道在评论。