Google App Engine 灵活自定义运行时中的 gcsfuse

Google App Engine 灵活自定义运行时中的 gcsfuse

我正在尝试使用 gcsfuse 在部署于 GAE 灵活自定义运行时实例中的 docker 容器中挂载 GCS 存储桶。这是 Dockerfile 的一部分:

FROM gcr.io/google-appengine/python

RUN apt-get -y update
RUN apt-get -y install lsb-release
RUN echo "deb http://packages.cloud.google.com/apt gcsfuse-$(lsb_release -cs) main" | tee /etc/apt/sources.list.d/gcsfuse.list
RUN curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
RUN apt-get -y update
RUN apt-get -y install fuse gcsfuse

然后,当我从 docker 容器中运行时,出现错误:

# gcsfuse --key-file=gcs_credentials.json bucket_name /tmp/mount_path
Using mount point: /tmp/mount_path
Opening GCS connection...
Opening bucket...
Mounting file system...
daemonize.Run: readFromProcess: sub-process: mountWithArgs: mountWithConn: Mount: mount: running fusermount: exit status 1
stderr:
fusermount: fuse device not found, try 'modprobe fuse' first

然后根据错误消息的建议我运行:

# modprobe fuse
bash: modprobe: command not found

我在其他一些问题中看到我应该以特权模式运行 docker 容器,但我找不到如何在 GAE 实例中运行容器时执行此操作。还有其他方法吗?

答案1

问题在于安全上下文和权限:

在 Kuberentes 中:

securityContext:
  capabilities:
    add:
    - SYS_ADMIN
  privileged: true

在 Docker 中你可以尝试这个问题

相关内容