我正在运行一个烧瓶应用程序,该应用程序提供一个 ML 模型,该模型加载到 k8s 上的 wordembeddings 文件 (2GB) 中。该文件正在使用 gcsfuse 加载,我们的应用程序运行了大约 2 年。
由于最近重新启动了 pod,此设置不再起作用,而我们的代码/部署设置没有任何变化。在调试时,我注意到我们甚至遇到了以下 dockerfile 甚至不使用 python 脚本的问题:
Dockerfile:
FROM levkuznetsov/gcsfuse-docker
RUN apt-get update && apt-get install -y
build-essential
COPY . /app
WORKDIR /app
RUN /bin/bash -c "mkdir -p /app/wordembeddingtest"
COPY ./serviceacc.json /
ADD /serviceacc.json /etc/gcloud/serviceacc.json
ADD /serviceacc.json /etc/gcloud/service-account.json
EXPOSE 8080
ENTRYPOINT ["/bin/bash", "-c", "gcsfuse bucket_name wordembeddingtest ; ls wordembeddingtest"]
更奇怪的是,我们还有其他使用相同设置的部署,它们可以重新启动并且仍然可以工作。
日志显示以下错误:
通过 --foreground --debug_invariants --debug_http --debug_gcs --debug_fuse 我们得到以下信息:
到目前为止我检查过的内容:
服务帐号权限没问题
到目前为止我已经尝试过:
不同的存储桶 gcsfuse 命令与 Implicit-dirs, -o allow_other 不同的 kubernetes 集群 其他挂载文件夹位置