本文档介绍了如何停止或重启 Compute Engine 实例。如需详细了解停止实例的影响,以及暂停、停止或重置实例之间的区别,请参阅暂停、停止或重置 Compute Engine 实例。
当您不再使用实例或要修改其属性(例如更改其机器类型或移除任何已挂接和已装载的磁盘)时,停止实例会很有用。停止实例后,您可以执行以下操作:
重启该实例即可恢复工作负载。
如果您不再需要该文件,请将其删除。
如需自动停止或重启实例,请改为参阅以下内容:
准备工作
-
如果您尚未设置身份验证,请进行设置。身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以选择以下任一选项向 Compute Engine 进行身份验证:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
-
如需停止实例,请执行以下操作:
实例的
compute.instances.stop
权限 -
从客机操作系统内部停止实例:实例的
compute.instances.setMetadata
权限(如果实例使用实例级 SSH 公钥)。 -
如需重启实例,请执行以下操作:实例的
compute.instances.start
权限 -
重启使用加密密钥的实例:实例的
compute.instances.startWithEncryptionKey
权限 -
您可以同时停止一个或多个未挂接任何本地 SSD 磁盘的实例。
-
停止一个或多个挂接了本地 SSD 磁盘的实例时,您可以选择舍弃或保留(预览)这些磁盘上的数据。
-
您可以从实例的客机操作系统内部停止实例。如果您已连接到实例,或者有需要在实例停止前运行的关停脚本,此方法会很有用。不过,除非您手动将任何本地 SSD 磁盘上的数据备份到持久性存储卷,否则从客机操作系统内停止实例会丢弃已附加的本地 SSD 磁盘上的所有数据。
在 Google Cloud 控制台中,前往虚拟机实例页面。
选择要停止的正在运行的实例。
点击
停止,然后点击停止进行确认。INSTANCE_NAMES
:实例名称列表(以空格分隔),例如instance-01 instance-02 instance-03
。ZONE
:实例所在的可用区。INSTANCE_NAME
:实例的名称。PROJECT_ID
:实例所在的项目的 ID。ZONE
:实例所在的区域。如需保留挂接到实例的本地 SSD 磁盘的数据,请使用 gcloud CLI 或 REST API 停止实例。
如需同时停止多个实例,请使用 Google Cloud 控制台或 gcloud CLI(对于位于同一可用区的实例)。
在 Google Cloud 控制台中,前往虚拟机实例页面。
选择要停止的正在运行的实例。
点击
停止,然后点击停止进行确认。如需舍弃本地 SSD 数据,请使用带有
--discard-local-ssd=true
标志的gcloud compute instances stop
命令:gcloud compute instances stop INSTANCE_NAMES \ --discard-local-ssd=true \ --zone=ZONE
如需保留本地 SSD 数据,请使用带有
--discard-local-ssd=false
标志的gcloud beta compute instances stop
命令:gcloud beta compute instances stop INSTANCE_NAMES \ --discard-local-ssd=false \ --zone=ZONE
INSTANCE_NAMES
:实例名称列表(以空格分隔),例如instance-01 instance-02 instance-03
。ZONE
:实例所在的可用区。如需舍弃本地 SSD 数据,请向
instances.stop
方法发出POST
请求。在请求网址中添加discardLocalSsd
查询参数并将其设置为true
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/stop?discardLocalSsd=true
如需保留本地 SSD 数据,请向
beta.instances.stop
方法发出POST
请求。在请求网址中添加discardLocalSsd
查询参数并将其设置为false
:POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/stop?discardLocalSsd=false
PROJECT_ID
:实例所在的项目的 ID。ZONE
:实例所在的区域。INSTANCE_NAME
:实例的名称。如果您尚未连接到实例,请先执行此操作。
如需停止实例,请选择以下方法之一:
如需进行彻底关停,使实例能够先关停脚本,然后系统再关闭客机操作系统,请运行以下命令:
sudo shutdown -h now
否则,如需强制关停,请运行以下命令:
sudo poweroff
如果您尚未连接到实例,请使用以下方法之一连接到实例:
如需停止实例,请选择以下方法之一:
如需进行彻底关停,使实例能够先关停脚本,然后系统再关闭客机操作系统,请运行以下命令:
shutdown /s
否则,如需强制关停,请运行以下命令:
shutdown /f
如果您的实例未挂接加密磁盘,请参阅重启不含加密磁盘的实例。
否则,请参阅重启挂接了加密磁盘的实例。
在 Google Cloud 控制台中,前往虚拟机实例页面。
选择一个或多个实例。
点击
启动/恢复。INSTANCE_NAMES
:实例名称列表(以空格分隔),例如instance-01 instance-02 instance-03
。ZONE
:实例所在的可用区。INSTANCE_NAME
:要重启的实例的名称。PROJECT_ID
:实例所在的项目的 ID。ZONE
:实例所在的区域。在 Google Cloud 控制台中,前往虚拟机实例页面。
选择要重启的实例。
点击
启动/恢复。为挂接到实例的每个加密磁盘指定加密密钥,然后点击开始。
INSTANCE_NAMES
:实例名称列表(以空格分隔),例如instance-01 instance-02 instance-03
。ENCRYPTION_KEY_FILE
:包含客户提供的加密密钥的 JSON 文件的相对路径。只有当多个实例使用相同的客户提供的加密密钥时,您才能同时重启多个实例。ZONE
:实例所在的可用区。PROJECT_ID
:实例所在的项目的 ID。ZONE
:实例所在的区域。INSTANCE_NAME
:实例的名称。DISK_URL
:与挂接的磁盘(已使用客户提供的加密密钥进行了加密)的完整资源名称对应的资源网址。ENCRYPTION_TYPE
:您使用的磁盘加密类型,可以是以下类型之一:rawKey
、kmsKeyName
或rsaEncryptedKey
。如果您使用rsaEncryptedKey
类型,请向beta.instances.startWithEncryptionKey
方法发出POST
请求。ENCRYPTION_KEY
:用于加密挂接到实例的永久性磁盘的加密密钥。rawKey
或rsaEncryptedKey
密钥必须采用 base64 编码。此外,如需准备rsaEncryptedKey
密钥,请参阅 RSA 密钥封装。
Go
如需在本地开发环境中使用本页面上的 Go 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭据设置应用默认凭据。
如需了解详情,请参阅 Set up authentication for a local development environment。
Java
如需在本地开发环境中使用本页面上的 Java 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭据设置应用默认凭据。
如需了解详情,请参阅 Set up authentication for a local development environment。
Node.js
如需在本地开发环境中使用本页面上的 Node.js 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭据设置应用默认凭据。
如需了解详情,请参阅 Set up authentication for a local development environment。
PHP
如需在本地开发环境中使用本页面上的 PHP 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭据设置应用默认凭据。
如需了解详情,请参阅 Set up authentication for a local development environment。
Python
如需在本地开发环境中使用本页面上的 Python 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭据设置应用默认凭据。
如需了解详情,请参阅 Set up authentication for a local development environment。
REST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。
所需的角色
如需获得停止和重启计算实例所需的权限,请让您的管理员为您授予项目的 Compute Instance Admin (v1) (
roles/compute.instanceAdmin.v1
) IAM 角色。 如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。此预定义角色包含停止和重启计算实例所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
如需停止和重启计算实例,您需要具备以下权限:
停止实例
当您停止计算实例且 Compute Engine 将其状态更改为
TERMINATED
时,该实例会保留其附加资源、配置设置、内部 IP 地址、MAC 地址和元数据。但是,实例会失去其内存中数据和应用状态。如果您需要保留这些内容,请改为暂停实例。您可以使用以下方法停止实例。您选择的方法取决于实例是否已附加本地 SSD 磁盘,以及您希望如何处理关闭脚本:
停止实例后,您可以根据需要重启实例,或者在不再需要实例时删除实例。
停止没有本地 SSD 磁盘的实例
您可以同时停止多个计算实例,也可以单独停止某个实例。对于多个实例,请使用 Google Cloud 控制台;对于位于同一可用区的实例,请使用 Google Cloud CLI。对于个别实例,请选择以下任一选项:
控制台
gcloud
如需停止单个可用区中的一个或多个实例,请使用
gcloud compute instances stop
命令:gcloud compute instances stop INSTANCE_NAMES \ --zone=ZONE
替换以下内容:
Go
Java
Node.js
PHP
Python
REST
如需停止实例,请向
instances.stop
方法发出POST
请求:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/stop
替换以下内容:
停止具有本地 SSD 磁盘的实例
根据您要同时停止的计算实例数量以及您是否需要保留其所附加本地 SSD 磁盘的数据,请执行以下操作:
如需停止一个或多个已挂接本地 SSD 磁盘的实例,请选择以下选项之一:
控制台
gcloud
在单个可用区中停止一个或多个已挂接本地 SSD 磁盘的实例时,请按如下方式指定是舍弃还是保留本地 SSD 数据:
替换以下内容:
REST
停止已挂接本地 SSD 磁盘的实例时,请按如下方式指定是舍弃还是保留本地 SSD 数据:
替换以下内容:
从客机操作系统停止实例
如果您停止已挂接本地 SSD 磁盘的计算实例,则从其客机操作系统内停止实例会舍弃本地 SSD 数据。如果您想保留本地 SSD 数据,则必须在停止实例之前手动将数据复制到持久性存储选项(例如已挂接的 Google Cloud Hyperdisk 或 Persistent Disk 卷),甚至是 Cloud Storage。
如需从客机操作系统内部停止实例,请选择以下选项之一:
Linux
Windows
重启实例
您可以重启已完全停止的计算实例(即实例状态为
TERMINATED
)。如果您在停止实例时选择保留本地 SSD 磁盘的数据,则可能需要在重启实例后重新挂载本地 SSD 磁盘。如需详细了解如何装载本地 SSD 磁盘,请参阅格式化并装载本地 SSD 设备。
如需重启实例,请根据实例是否已挂接加密磁盘,使用以下方法之一:
重启没有加密磁盘的实例
您可以同时重启多个计算实例,也可以单独重启实例。对于多个实例,请使用 Google Cloud 控制台或 gcloud CLI(对于位于同一可用区的实例)。对于单个实例,请选择以下任一选项:
控制台
gcloud
如需重启单个可用区中的一个或多个实例,请使用
gcloud compute instances start
命令:gcloud compute instances start INSTANCE_NAMES \ --zone=ZONE
替换以下内容:
Go
Java
Node.js
PHP
Python
REST
如需重启实例,请向
instances.start
方法发出POST
请求:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/start
替换以下内容:
重启具有加密磁盘的实例
当您重启已停止的计算实例时,如果该实例的挂接磁盘是使用客户提供的加密密钥加密的,您必须提供加密密钥信息。
如需同时重启多个实例,请使用 Google Cloud 控制台或 gcloud CLI(对于位于同一可用区的实例)。否则,如需重启单个实例,请选择以下任一选项:
控制台
gcloud
如需重启单个可用区中使用加密磁盘的一个或多个实例,请使用带有
--csek-key-file
标志的gcloud compute instances start
命令。如果您使用的是 RSA 封装密钥,请改用带有--csek-key-file
标志的gcloud beta compute instances start
命令:gcloud compute instances start INSTANCE_NAMES \ --csek-key-file=ENCRYPTION_KEY_FILE \ --zone=ZONE
替换以下内容:
Go
Java
Node.js
PHP
Python
REST
如需重启使用加密磁盘的实例,请向
instances.startWithEncryptionKey
方法发出POST
请求:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/startWithEncryptionKey { "disks": [ { "source": "DISK_URL", "diskEncryptionKey": { "ENCRYPTION_TYPE": "ENCRYPTION_KEY" } } ] }
替换以下内容:
后续步骤
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2024-12-22。
-