8

我设法创建了一个实例并通过 ssh 进入其中。但是,我有几个关于 Google Compute Engine 的问题。

  1. 我了解我将按我的实例运行时间付费。直到我退出实例。我的理解正确吗?
  2. 我希望在我的实例上运行一些批处理作业(java 程序)。如何让我的实例在作业完成后自动停止(这样我就不会因为它可能运行的额外时间而被收费)
  3. 如果我启动作业并断开我的 PC,作业会继续在实例上运行吗?

问候, 阿西姆

4

4 回答 4

12

正确,实例按其运行时间收费。(到分钟,最少 10 分钟)。实例从通过 API 启动到通过 API 停止运行。任何用户是否通过 SSH 登录都没有关系。对于大多数自动化用例,用户从不登录——程序是通过启动脚本安装和启动的。

您可以通过Cloud Console查看正在运行的实例,以确认当前是否正在运行。

如果要从实例内部停止实例,最简单的方法是使用 compute-rw服务帐户范围启动实例并使用 gcutil。

例如,要使用 compute-rw 范围从命令行启动您的实例:

$ gcutil --project=<project-id> addinstance <instance name> --service_account_scopes=compute-rw

(这是通过 Cloud Console 手动创建实例时的默认设置)

稍后,在您的批处理作业完成后,您可以从实例内部删除该实例:

$ gcutil deleteinstance -f <instance name>
于 2013-05-17T15:25:38.877 回答
5

您可以将暂停命令放在批处理脚本的末尾(假设您在永久磁盘上输出结果)。暂停后,实例将处于 TERMINATED 状态,您不会被收费。请参阅https://developers.google.com/compute/docs/pricing 向下滚动到“实例正常运行时间”

于 2013-05-18T20:54:43.273 回答
1

您可以在模型训练后自动关闭实例。模型训练完成后,只需运行几行额外的代码。

from googleapiclient import discovery
from oauth2client.client import GoogleCredentials

credentials = GoogleCredentials.get_application_default()

service = discovery.build('compute', 'v1', credentials=credentials)

# Project ID for this request.
project = 'xyz'  # Project ID
# The name of the zone for this request.
zone = 'xyz'  # Zone information

# Name of the instance resource to stop.
instance = 'xyz'  # instance id

request = service.instances().stop(project=project, zone=zone, instance=instance)
response = request.execute()

将此添加到您的模型训练脚本中。训练完成后,GCP 实例会自动关闭。官网更多信息: https ://cloud.google.com/compute/docs/reference/rest/v1/instances/stop

于 2019-09-26T06:30:50.787 回答
0

如果要使用 python 脚本停止实例,可以按照以下方式进行:

from google.cloud.compute_v1.services.instances import InstancesClient
from google.oauth2 import service_account

instance_client = InstancesClient().from_service_account_file(<location-path>)
zone = <zone>
project = <project>
instance = <instance_id>
instance_client.stop(project=project, instance=instance, zone=zone)

在上面的脚本中,我假设您正在使用服务帐户进行身份验证。有关使用的库的文档,您可以访问此处: https ://googleapis.dev/python/compute/latest/compute_v1/instances.html

于 2021-04-28T10:11:29.043 回答