Google compute engine 如何自动退出/停止正在运行的实例

Google compute engine 如何自动退出/停止正在运行的实例,google-compute-engine,Google Compute Engine,我已经成功地创建了一个实例并将ssh插入其中。然而,我有几个关于谷歌计算引擎的问题 我理解,我将按实例运行的时间收费。直到我退出这个实例。我的理解正确吗 我希望在我的实例上运行一些批处理作业(java程序)。如何使实例在作业完成后自动停止(这样我就不会因为它可能运行的额外时间而收取费用) 如果启动作业并断开PC连接,作业是否会继续在实例上运行 问候,, Asim正确,实例按运行时间计费。(精确到分钟,至少10分钟)。实例从通过API启动到通过API停止运行。不管是否有用户通过SSH登录。对于大多

我已经成功地创建了一个实例并将ssh插入其中。然而,我有几个关于谷歌计算引擎的问题

  • 我理解,我将按实例运行的时间收费。直到我退出这个实例。我的理解正确吗
  • 我希望在我的实例上运行一些批处理作业(java程序)。如何使实例在作业完成后自动停止(这样我就不会因为它可能运行的额外时间而收取费用)
  • 如果启动作业并断开PC连接,作业是否会继续在实例上运行
  • 问候,,
    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