本文档介绍如何删除虚拟机 (VM) 实例。
如果您不再需要虚拟机,可将其删除,以免虚拟机及其挂接的资源产生费用。如果要保留挂接的资源,请在删除虚拟机之前执行以下一项或多项操作:
如需保留挂接到要删除的 N1 虚拟机的 GPU,请从虚拟机中移除 GPU。
如需保留永久性磁盘,请执行以下操作之一:
如需保留���动磁盘,请将启动磁盘与虚拟机分离。
如需保留启动磁盘或非启动磁盘,请将磁盘的自动删除设置设置为
false
。
准备工作
-
设置身份验证(如果尚未设置)。身份验证是通过其进行身份验证以访问 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.
- 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.
C#
如需在本地开发环境中使用本页面上的 .NET 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭据设置应用默认凭据。
如需了解详情,请参阅 Set up authentication for a local development environment。
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。
Ruby
如需在本地开发环境中使用本页面上的 Ruby 示例,请安装并初始化 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.instances.delete
权限 -
如需强制删除挂接的永久性磁盘:针对磁盘的
compute.disks.delete
权限
结算影响
删除虚拟机后,除非符合以下任何情况,否则 Google Cloud 将不再针对虚拟机及其挂接的资源向您收取费用:
如果您删除在单租户节点上托管的虚拟机,则您将继续为单租户节点本身支付费用,而不是为在该节点上托管的各个虚拟机支付费用。
如果您有承诺使用折扣,则无论您是否使用这些资源,您都需要继续为所承诺的资源付费。
如果您保留了挂接到虚拟机的任何资源,这些资源会继续产生费用,直到您将其删除。例如,如果您删除一个虚拟机,但保留了挂接到该虚拟机的永久性磁盘卷,则这些磁盘会继续产生费用。
如需了解详情,请参阅虚拟机实例价格。
删除虚拟机的过程
删除虚拟机时,Compute Engine 会执行以下操作:
Compute Engine 会向虚拟机发送 ACPI 关停信号,然后在几秒钟内将虚拟机状态设置为
STOPPING
。Compute Engine 会在虚拟机中启动操作系统 (OS) 的正常关停。根据虚拟机类型,关停期如下所示:
抢占式虚拟机:抢占式虚拟机的关停期为 30 秒,与抢占过程的时长相同。
其他虚拟机类型:任何其他虚拟机类型的关停期至少为 90 秒。
关停期结束时,Compute Engine 将永久删除虚拟机及其挂接的资源。如果您将永久性磁盘配置为在删除其挂接到的虚拟机时保留,则 Compute Engine 会在删除虚拟机时保留该磁盘。
删除虚拟机
如需删除一个或多个虚拟机,请参阅本文档中的以下部分之一:
如需删除虚拟机及其所有挂接的资源(默认),请参阅删除虚拟机和所有挂接的资源。
如需删除虚拟机但保留其挂接的永久性磁盘卷,请参阅删除虚拟机并保留永久性磁盘卷。
删除虚拟机和所有挂接的资源
删除一个虚拟机时,默认情况下,Compute Engine 会删除该虚拟机及其所有挂接的资源。但是,如果您将永久性磁盘配置为在删除虚拟机时保留,则可以使用 gcloud CLI 覆盖此设置并同时删除虚拟机和磁盘。
如需同时删除多个虚拟机,请使用 Google Cloud 控制台或 gcloud CLI(对于位于同一可用区的虚拟机)。否则,如需删除单个虚拟机,请使用本部分中介绍的任何方法。
控制台
如需删除一个或多个虚拟机,请执行以下操作:
在 Google Cloud 控制台中,转到虚拟机实例页面。
选择要删除的虚拟机。
点击
删除,然后再次点击删除进行确认。
gcloud
如需删除一个或多个虚拟机,请使用 gcloud compute instances delete
命令。
gcloud compute instances delete VM_NAMES \
--zone=ZONE
替换以下内容:
VM_NAMES
:位于同一可用区的虚拟机名称列表(以空格分隔);例如vm-01 vm-02 vm-03
。ZONE
:虚拟机的可用区。
(可选)如需强制删除挂接到一个或多个虚拟机的永久性磁盘卷,请添加 --delete-disks
标志。
gcloud compute instances delete VM_NAMES \
--delete-disks=DELETE_DISK_TYPE \
--zone=ZONE
将 DELETE_DISK_TYPE
替换为要删除的所挂接永久性磁盘卷的类型。请指定以下某个值:
如需删除所有类型的磁盘:
all
。如需仅删除启动磁盘:
boot
。如需仅删除非启动磁盘:
data
。
C#
Go
Java
Node.js
PHP
Python
Ruby
REST
如需删除虚拟机,请向 instances delete
方法发出 DELETE
请求。
DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
替换以下内容:
PROJECT_ID
:虚拟机所在项目的 ID。ZONE
:虚拟机的可用区。VM_NAME
:虚拟机名称。
删除虚拟机并保留永久性磁盘卷
默认情况下,删除虚拟机会删除虚拟机及其挂接的资源。但是,使用 gcloud CLI 删除虚拟机时,您可以指定保留挂接的启动磁盘和/或非启动磁盘,而不考虑磁盘的自动删除设置。
如需删除位于同一可用区的一个或多个虚拟机,同时保留其挂接的永久性磁盘卷,请使用带有 --keep-disks
标志的 gcloud compute instances delete
命令。
gcloud compute instances delete VM_NAMES \
--keep-disks=KEEP_DISK_TYPE \
--zone=ZONE
替换以下内容:
VM_NAMES
:位于同一可用区的虚拟机名称列表(以空格分隔);例如vm-01 vm-02 vm-03
。KEEP_DISK_TYPE
:要保留的所挂接永久性磁盘卷的类型。请指定以下某个值:如需保留所有类型的磁盘:
all
。如需仅保留启动磁盘:
boot
。如需仅保留非启动磁盘:
data
。
ZONE
:虚拟机所在的可用区。
后续步骤
详细了解虚拟机生命周期。
详细了解已停止的虚拟机产生的费用。
了解如何限制虚拟机的运行时。