GKE 无法从 GCR 中提取图像



这一次真是令人头疼,因为多年来一切都很好,直到昨天。我有一个谷歌云账户,账单设置正确。我的GCR注册表中有私人图像,我可以从我的笔记本电脑(带Big Sur 11.4的MacBook Pro(中"提取"one_answers"推送",没有任何问题。

我在这里详细描述的问题昨天开始发生,当时我删除了谷歌云控制台中的一个项目,然后用相同的名称从头开始创建它。以前的项目提取GCR图像没有问题,新的项目无法提取相同的图像。我现在已经使用云控制台创建了具有各种名称的新的空测试项目,新的集群使用默认的GKE值。但这个新问题一直困扰着他们。

当我使用kubectl在GKE上创建一个使用同一项目中任何GCR映像的部署时,我会得到ErrImagePull错误。当我"描述"不会加载图像的吊舱时,错误(项目id被遮挡(是:

未能提取图像";gcr.io/test-xxxxxxx/test:1.0.0〃:rpc错误:代码=未知desc=未能提取和解压缩图像";gcr.io/test-xxxxxxx/test:1.0.0〃:未能解析引用"gcr.io/test-xxxxxxx/test:1.0.0〃:意外状态代码[清单1.0.0]:401未经授权。

当我从笔记本电脑上使用kubectl时(包括在删除并创建具有正确凭据的新.kube/config文件之后(,会发生这种情况,但当我使用云控制台为GCR映像选择"Deploy to GKE"来设置部署时,情况完全相同。。。没有库贝克特尔参与。

如果我ssh到这些新集群中的任何一个节点,并尝试"docker pull"GCR映像(在同一项目中(,我会得到类似的错误:

后台进程的错误响应:未经授权:您没有所需的执行此操作的权限,并且您可能具有无效权限资格证书要验证您的请求,请按照中的步骤进行操作:https://cloud.google.com/container-registry/docs/advanced-authentication

我从许多文章中了解到,GKE从同一项目中提取GCR图像不需要设置特殊授权,而且我过去从未遇到过这个问题。

我希望我不是这个荒岛上唯一的一个人。提前感谢您的帮助!

我尝试实现设置,但在GKE集群和集群的节点上都遇到了相同的错误。这是因为群集节点上对云存储API的访问已"禁用",可以从"云API访问范围"部分下的节点(VM实例(详细信息中验证该群集节点。

我们可以通过将"访问范围"更改为"为每个API设置访问权限"来纠正这一问题,并修改对节点池中特定API的访问权限->默认池->创建群集时的安全部分。在我们的情况下,我们至少需要";只读";访问存储API以允许访问存储图像的云存储。更改实例的服务帐户和访问范围以获取详细信息。

最新更新