我的 Google Cloud 遇到涉及两个虚拟机的情况:
我的目标是使用 gcloud CLI、利用服务帐户 [email protected] 从实例 1 管理实例 2。为了实现这一点,我尝试在实例 1 内的 CMD 控制台中运行以下命令:
gcloud compute instances describe instance2 --zone=my-zone --project=my-project
不幸的是,我遇到了错误:
ERROR: (gcloud.compute.instances.describe) Could not fetch resource:
- Request had insufficient authentication scopes.
奇怪的是,使用相同的服务帐户在我的本地 PC 上执行相同的命令没有任何问题。
是否有其他人遇到过类似的问题,您能否提供有关可能导致此“身份验证范围不足”错误的任何见解?对于如何排查和解决此问题的任何建议,我将不胜感激。谢谢您的帮助!
请求身份验证范围不足错误可能由多种原因引起,例如权限不足、项目或集群名称错误以及过时的 Google Cloud SDK。
要修复此错误:
如果您使用云控制台,则在创建 VM 时查找“身份和 API 访问”部分,然后选择“允许完全访问所有云 API”。
遵循的步骤:
导航到 Google Cloud Console:虚拟机实例 -> 计算引擎
单击现有虚拟机的名称将打开虚拟机实例详细信息页面。
在页面顶部附近,单击“编辑”链接。
然后,更改 Cloud API 访问范围以允许完全访问所有 Cloud API。
您无法将其添加到现有虚拟机,但您可以构建具有范围的新节点池(因此它适用于新虚拟机),然后将工作负载迁移到新节点池并删除旧节点池。
对于 GKE,您需要将范围添加到托管实例组的实例模板中。您可以对单个计算机执行此操作,但我仍然认为您无法在不创建新节点池的情况下对一组计算机执行此操作。
对于单台计算机,您现在可以停止、更改范围并恢复虚拟机。但是,如果您的虚拟机是托管实例组的一部分(由 GKE 或其他方式管理),我不认为您可以使用该方法来修改范围,并且您将需要使用正确的值构造一个新的托管实例组从一开始就确定范围。
要确定您拥有哪些权限,请执行 gcloud 项目 get-iam-policy PROJECT_ID
相关信息也可以参考这个官方doc。