涉及服务帐户的错误消息以及该项目已经存在的事实表明,Ray Autoscaler 使用的 googlecloudapiclient 已针对无权访问该项目的服务帐户进行了身份验证。
如果这是真的,那么这就是我认为会发生的事情。通常,在运行 Ray GCP Autoscaler 时,它会首先检查具有给定 id 的项目是否存在。在您的情况下,此请求返回“未找到”,因为没有具有与服务帐户关联的给定 ID 的项目。现在,由于该项目不存在,Ray 会自动尝试为您创建一个。通常,如果我们使用用户帐户(即非服务帐户)创建新的 GCP 项目,则新创建的项目将与用户帐户的默认组织相关联。但是,服务帐户必须在创建新项目时明确指定父组织。如果我们查看ray.autoscaler.config._create_project函数,我们会看到传递给projects.create
方法省略 'parent' 参数,这解释了您看到错误的原因。
要验证这是否属实(并希望能解决问题),您可以更改用于通过 googlecloudapiclient 进行身份验证的帐户。我相信用于 googlecloudapiclient 请求的凭据与 Google Cloud SDK 使用的凭据相同,因此您应该能够使用gcloud auth login命令配置帐户。
我认为 Ray Autoscaler 可以通过允许用户在创建新项目时明确指定父组织,或者至少通过为这种特殊情况提供更详细的错误消息来改进。
我希望这可以解决您的问题。如果没有,并且您认为这是 Autoscaler 的问题,请不要犹豫,向Ray 问题页面打开问题或功能请求!