Google Filestore を GCS バケットにバックアップしようとしています。また、プライマリ リージョンのファイルストアの内容をセカンダリ リージョンの別のファイルストアに再同期したいと考えています。
このために、コンピューティング エンジン VM で正常に動作する bash スクリプトを作成しました。これを、GKE クラスター内で kubernetes cronjob として実行している docker コンテナーに変換しました。
しかし、GKE ポッド内でスクリプトを実行すると、次のエラーが表示されます。
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 '^]'.
ポッドの IP 範囲も VPC の IP 範囲に追加されます。Filestore には、VPC を許可するためのフル アクセスが付与されています。同じスクリプトがコンピューティング エンジン VM で正常に動作しています。
GKE ポッド内に Google ファイルストアをマウントできないのはなぜですか?
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 で環境変数として渡されます。