Tom*_*asz 0 google-app-engine docker google-cloud-platform gcsfuse
我正在尝试在App Engine Flexible上运行Airflow Webserver,但是要使其正常工作,我需要安装一个GCS存储桶。我正在使用自定义运行时。我这样做的原因是为了获得App Engine与IAP一起提供的安全端点。
我的app.yaml是一个带有服务名称,env和运行时的简单文件。我的Dockerfile是很多apt-get install
s,在CMD中有gcsfuse挂载和运行气流Web服务器,这没什么大不了的。
尝试在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
Run Code Online (Sandbox Code Playgroud)
我知道Google Composer存在,但对于我的需求来说太贵了。因此,我更喜欢在GAE上使用调度程序和Web服务器创建一个VM,共享一个GCS存储桶,类似于Composer提供的功能,但是没有HA以及我想运行的简单东西的所有疯狂费用。
我正在App Engine中进行搜索,到目前为止,由于某种原因,我找到的所有答案都提到了GKE。
我知道这是一个特权问题,但是在App Engine中,我看不到任何设置特权的选项,这样做的方式将非常有帮助。
甚至可以在App Engine上做我想做的事吗?
这个有可能。我将向您展示如何手动执行操作,您可能需要利用shell脚本来处理多个实例。
service=YOUR_APPENGINE_VERSION
version=YOUR_APPENGINE_VERSION
project=PROJECTID
Run Code Online (Sandbox Code Playgroud)
gcloud app instances list --project $project
SERVICE VERSION ID VM_STATUS DEBUG_MODE
default *************** instance-id-1 RUNNING YES
default *************** instance-id-2 RUNNING
Run Code Online (Sandbox Code Playgroud)
gcloud app instances ssh instance-id-1 --service $service --version $version --project $project
Run Code Online (Sandbox Code Playgroud)
docker ps | grep gaeapp | awk '{print $2}'
Run Code Online (Sandbox Code Playgroud)
你会得到一个imageid
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=*****
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
/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.
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
200 次 |
最近记录: |