gpt4 book ai didi

docker - 在 Google App Engine 上运行 gcsfuse 时出现问题

转载 作者:行者123 更新时间:2023-12-02 18:44:12 25 4
gpt4 key购买 nike

我正在尝试在 App Engine Flexible 上运行 Airflow Webserver,但要使其正常工作,我需要一个已安装的 GCS 存储桶。我正在使用自定义运行时。我这样做的原因是为了获得 App Engine 与 IAP 一起提供的安全端点。

我的 app.yaml 是一个包含服务名称、环境和运行时的简单文件我的 Dockerfile 有很多 apt-get install,在 CMD 中有 gcsfuse 安装和运行 airflow webserver,这没什么大不了的。

我在 App Engine 中尝试使用 gcsfuse 时遇到的错误是:

daemonize.Run: readFromProcess: sub-process: mountWithArgs: mountWithConn: Mount: mount: running fusermount: exit status 1

stderr:
fusermount: fuse device not found, try 'modprobe fuse' first

我知道 Google Composer 存在,但它对我的需求来说太贵了。因此,我更喜欢在 GAE 上创建一个带有调度程序和网络服务器的虚拟机,共享一个 GCS 存储桶,类似于 Composer 提供的功能,但没有所有 HA 和我想运行的简单事物的疯狂成本。

我正在寻找在 App Engine 中执行此操作,到目前为止我找到的所有答案都出于某种原因提到了 GKE。

我知道这是一个权限问题,但是在 App Engine 中我没有看到任何设置权限的选项,如果有一种方法会非常有帮助。

甚至可以在 App Engine 上做我想做的事吗?

最佳答案

这是可能的。我将向您展示如何手动执行此操作,您可能需要利用 shell 脚本来处理多个实例。

  1. 定义本手册中使用的几个变量
service=YOUR_APPENGINE_VERSION
version=YOUR_APPENGINE_VERSION
project=PROJECTID
  1. 获取实例列表
gcloud app instances list  --project $project
SERVICE VERSION ID VM_STATUS DEBUG_MODE
default *************** instance-id-1 RUNNING YES
default *************** instance-id-2 RUNNING
  1. ssh 进入一个实例
gcloud app instances ssh instance-id-1 --service $service --version $version --project $project
  1. 获取图片id
docker ps | grep gaeapp | awk '{print $2}'

你会得到一个imageid

  1. 获取gaeapp的环境
docker exec gaeapp env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=*****
GAE_MEMORY_MB=614
GAE_INSTANCE=****
GAE_SERVICE=default
PORT=8080
GCLOUD_PROJECT=*****
GAE_VERSION=*****
GOOGLE_CLOUD_PROJECT=*****
  1. 以特权重启gaeapp
docker rm -f gaeapp
docker run --privileged -d -p 8080:8080 --name gaeapp -e GAE_MEMORY_MB=614 -e GAE_INSTANCE=instance-id-1 -e GAE_SERVICE=$service -e PORT=8080 -e GCLOUD_PROJECT=$project -e GAE_VERSION=$version -e GOOGLE_CLOUD_PROJECT=$project $imageid
  1. 输入 gaeapp(假设您已经安装了 gcsfuse 并且有服务帐户 key json:/test-service-account.json)
$ docker exec -it gaeapp bash
[in gaeapp] # GOOGLE_APPLICATION_CREDENTIALS=/test-service-account.json gcsfuse BUCKET /mnt/
Using mount point: /mnt
Opening GCS connection...
Opening bucket...
Mounting file system...
File system has been successfully mounted.

关于docker - 在 Google App Engine 上运行 gcsfuse 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56254714/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com