我有两个虚拟机运行在谷歌电脑引擎。它们是相同的,除非它们在不同的服务帐户下运行。
据我所知,这两个服务帐户对gcr.io使用的存储桶具有相同的权限。


当VM启动时运行的init脚本从data-dev-dp@project-id.iam.gserviceaccount.com上从gcr.io中提取一个停靠容器,在VM上运行时,拉成功:
Unable to find image 'gcr.io/project-id/gdp/jupyterlab-py2-spark-notebook:1.9' locally
1.9: Pulling from project-id/gdp/jupyterlab-py2-spark-notebook
bc51dd8edc1b: Pulling fs layer
b56e3f6802e3: Pulling fs layer在以data-dev-cmp@project-id.iam.gserviceaccount.com方式运行的VM上,拉失败:
Unable to find image 'gcr.io/project-id/gdp/jupyterlab-py2-spark-notebook:1.9' locally
/usr/bin/docker: Error response from daemon: pull access denied for gcr.io/project-id/gdp/jupyterlab-py2-spark-notebook, repository does not exist or may require 'docker login': denied: Permission denied for "1.9" from request "/v2/project-id/gdp/jupyterlab-py2-spark-notebook/manifests/1.9"我的印象是,拥有相同的权限就足够了,因此,我想知道还需要哪些权限才能完成这项工作。有人能提点建议吗?
最新消息。我使用工具箱(https://cloud.google.com/container-optimized-os/docs/how-to/toolbox)来验证对于这两个帐户存储桶的权限是否相同:
# gsutil ls gs://artifacts.project-id.appspot.com
gs://artifacts.project-id.appspot.com/containers/# gsutil ls gs://artifacts.project-id.appspot.com
AccessDeniedException: 403 data-dev-cmp@project-id.iam.gserviceaccount.com does not have storage.objects.list access to artifacts.project-id.appspot.com.显然,这就是问题的原因,尽管我觉得很奇怪,我上面的GCP控制台截图显示不同的地方。我正在继续调查。
发布于 2020-02-26 23:41:19
事实证明,这是一个我们非常熟悉的问题,因为我们不断地建立基础设施,拆除基础设施,并重新站起来。当这样做时,特别是当这些操作不干净地发生时(就像今天的情况一样),我们可以发现自己处于一个位置,角色被分配给服务帐户的旧实例。控制台会告诉您帐户有分配给它的角色,但实际上并非如此。我们经常遇到这个问题。
在这种情况下,解决方案是彻底拆除所有基础设施,然后再重新创建它,包括显示问题的服务帐户。
https://stackoverflow.com/questions/60418469
复制相似问题