Google compute engine 如何自动退出/停止正在运行的实例
我已经成功地创建了一个实例并将ssh插入其中。然而,我有几个关于谷歌计算引擎的问题Google compute engine 如何自动退出/停止正在运行的实例,google-compute-engine,Google Compute Engine,我已经成功地创建了一个实例并将ssh插入其中。然而,我有几个关于谷歌计算引擎的问题 我理解,我将按实例运行的时间收费。直到我退出这个实例。我的理解正确吗 我希望在我的实例上运行一些批处理作业(java程序)。如何使实例在作业完成后自动停止(这样我就不会因为它可能运行的额外时间而收取费用) 如果启动作业并断开PC连接,作业是否会继续在实例上运行 问候,, Asim正确,实例按运行时间计费。(精确到分钟,至少10分钟)。实例从通过API启动到通过API停止运行。不管是否有用户通过SSH登录。对于大多
Asim正确,实例按运行时间计费。(精确到分钟,至少10分钟)。实例从通过API启动到通过API停止运行。不管是否有用户通过SSH登录。对于大多数自动化用例,用户从不登录-程序通过安装和启动 您可以通过查看正在运行的实例,以确认当前是否有正在运行的实例 如果要从实例内部停止实例,最简单的方法是使用compute rw启动实例并使用gcutil 例如,要使用compute rw范围从命令行启动实例,请执行以下操作:
$ gcutil --project=<project-id> addinstance <instance name> --service_account_scopes=compute-rw
$gcutil--project=addinstance--service\u account\u scopes=compute rw
(这是通过云控制台手动创建实例时的默认设置)
稍后,批处理作业完成后,可以从实例内部删除实例:
$ gcutil deleteinstance -f <instance name>
$gcutil deleteinstance-f
您可以将halt命令放在批处理脚本的末尾(假设您在永久磁盘上输出结果)。
停止后,实例将处于终止状态,您将不会被收费。
看见
向下滚动至“实例正常运行时间”您可以在模型培训后自动关闭实例。模型训练完成后,只需运行几行额外的代码
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实例自动关闭。
有关官方网站的更多信息:
如果要使用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)
来自google.cloud.compute_v1.services.instances导入InstanceClient
从google.oauth2导入服务_帐户
instance_client=InstancesClient()。来自_服务_帐户_文件()
分区=
项目=
实例=
实例\客户端.stop(项目=项目,实例=实例,区域=区域)
在上面的脚本中,我假设您正在使用服务帐户进行身份验证。有关所用库的文档,请访问:
假设我的批处理作业在我睡觉后完成。不幸的是,我将被指控直到第二天我看到并停止该实例。对吗?因此,我希望有某种方法可以“自动”停止实例(而不是每次都删除),这样我就不会被指控停止和删除实例在计算引擎中是一样的。如果从永久磁盘启动,则始终可以从磁盘启动新实例。就像关闭物理计算机一样。如果将上述“deleteinstance”命令作为运行批处理过程的脚本的最后一步添加,则该实例将在过程完成后立即停止。即使在你睡觉的时候。:)当我从云控制台创建实例时,服务帐户scopes值为:service\u account\u scopes=”“。这与您上面提到的compute rw相同吗?有没有办法从web控制台停止实例?如果有人想知道,这个命令对我有效:
sudo shutdown-h now