我正在尝试在Google Kubernetes Engine上部署Dask Gateway。部署没有问题。但是,在使用自定义dask-gateway dockerfile时遇到了问题,该文件继承自dockerhub的默认docker映像;然后将该容器提交给Google Container Registry(GCR)。似乎会导致以下PermissionError。
PermissionError: [Errno 13] Permission denied: '/home/dask/dask-worker-space
(有关完整堆栈跟踪,请参见下面的屏幕截图)
有趣的部分是,当敏捷工作人员直接从dockerhub而不是GCR使用docker映像时,黑暗工作人员可以毫无问题地启动。我需要使用自定义dockerfile向黑暗工人添加更多的python软件包,但除此之外,没有其他配置更改。就像将Docker容器发送到GCR会对权限产生一些时髦的作用。
这是错误的完整堆栈跟踪:
这是我正在使用的docker文件:
FROM daskgateway/dask-gateway:0.9.0
RUN pip --no-cache-dir install --upgrade cloudpickle dask-ml scikit-learn \
nltk gensim spacy keras asyncio google-cloud-storage SQLAlchemy snowflake-sqlalchemy google-api-core gcsfs pyarrow mlflow \
tensorflow prefect hvac aiofile google-cloud-logging
任何帮助将不胜感激,因为我不知道如何调试。
答案 0 :(得分:1)
在使用GKE群集时,请确保为群集设置的服务帐户对Container注册表具有正确的权限。
您正在创建图像,并将其提交到Container Registry,因此您将需要那里的写作者权限。如果您使用默认服务帐户或自定义帐户,则该过程有所不同。
如果集群正在运行,则需要更改每个节点池的作用域
gcloud container node-pools create [new pool name] \
--cluster [cluster name] \
--machine-type [your desired machine type] \
--num-nodes [the same amount of nodes you have] \
--scopes [your new set of scopes]
(所有可能的选项都可以在命令gcloud container node-pools create --help
上找到)
完成此操作后,将需要排空节点kubectl drain [node]
,并删除旧的节点池
gcloud container node-pools delete [POOL_NAME] \
--cluster [CLUSTER_NAME]
如果没有集群,则可以在创建控制台时在控制台上编辑范围,或者如果要使用gcloud创建它,则可以使用所需的范围(full list)