Stay organized with collections
Save and categorize content based on your preferences.
Deleting a virtual machine (VM) removes the VM and its associated resources from
your project. If you don't want to delete an instance, you can temporarily stop
it. See Stop and start a VM for those instructions.
Before you begin
To use gdcloud command-line interface (CLI) commands, ensure that you have downloaded, installed,
and configured the gdcloud CLI.
All commands for GDC air-gapped appliance use the gdcloud or
kubectl CLI, and require an operating system (OS) environment.
Get the kubeconfig file path
To run commands against the Management API server, ensure you have the following
resources:
Locate the Management API server name, or ask your Platform Administrator (PA)
what the server name is.
Sign in and generate the
kubeconfig file for the Management API server if you don't have one.
Use the path to replace MANAGEMENT_API_SERVER{"</var>"}} in these instructions.
Request permissions and access
To perform the tasks listed in this page, you must have the Project
VirtualMachine Admin role. Follow the steps to either
verify
or have your Project IAM Admin
assign
you the Project VirtualMachine Admin (project-vm-admin) role in the namespace
of the project where the VM resides.
For VM operations using the GDC console or the gdcloud CLI,
request your Project IAM Admin to assign you both the
Project VirtualMachine Admin role and the Project Viewer (project-viewer)
role.
Delete a VM
Delete a VM by using the GDC console or kubectl. The VM must not be
in a terminating or unknown state.
Console
In the navigation menu, click Virtual Machines > Instances.
In the list of VMs, select the checkbox for the VM that you want to delete.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-09-04 UTC."],[[["\u003cp\u003eDeleting a virtual machine (VM) permanently removes it and its resources from your project, as opposed to temporarily stopping it.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003egdcloud\u003c/code\u003e CLI must be downloaded, installed, and configured to use its commands for managing VMs on the GDC air-gapped appliance.\u003c/p\u003e\n"],["\u003cp\u003eVMs can be deleted via the GDC console, by selecting the VM from the list and confirming deletion, or via the \u003ccode\u003egdcloud\u003c/code\u003e command-line tool by using \u003ccode\u003egdcloud compute instances delete VM_NAME --project PROJECT\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eVMs can be deleted using the \u003ccode\u003ekubectl\u003c/code\u003e command-line tool by using the command: \u003ccode\u003ekubectl --kubeconfig ADMIN_KUBECONFIG delete virtualmachines.virtualmachine.gdc.goog VM_NAME -n NAMESPACE_NAME\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eYou can verify a VM has been deleted by using \u003ccode\u003ekubectl --kubeconfig ADMIN_KUBECONFIG get virtualmachines.virtualmachine.gdc.goog VM_NAME -n PROJECT\u003c/code\u003e.\u003c/p\u003e\n"]]],[],null,["# Delete VMs\n\nDeleting a virtual machine (VM) removes the VM and its associated resources from\nyour project. If you don't want to delete an instance, you can temporarily stop\nit. See [Stop and start a VM](/distributed-cloud/hosted/docs/latest/appliance/application/ao-user/vms/manage-vms/operations-and-lifecycle/start-and-stop-vm) for those instructions.\n\nBefore you begin\n----------------\n\nTo use `gdcloud` command-line interface (CLI) commands, ensure that you have downloaded, installed,\nand configured the [`gdcloud` CLI](/distributed-cloud/hosted/docs/latest/appliance/resources/gdcloud-overview).\nAll commands for GDC air-gapped appliance use the `gdcloud` or\n`kubectl` CLI, and require an operating system (OS) environment.\n\n### Get the kubeconfig file path\n\nTo run commands against the Management API server, ensure you have the following\nresources:\n\n1. Locate the Management API server name, or ask your Platform Administrator (PA)\n what the server name is.\n\n2. [Sign in and generate](/distributed-cloud/hosted/docs/latest/appliance/application/ao-user/iam/sign-in#cli) the\n kubeconfig file for the Management API server if you don't have one.\n\n3. Use the path to replace \u003cvar translate=\"no\"\u003eMANAGEMENT_API_SERVER{\"</var>\"}}\u003c/var\u003e in these instructions.\n\n### Request permissions and access\n\nTo perform the tasks listed in this page, you must have the Project\nVirtualMachine Admin role. Follow the steps to either\n[verify](/distributed-cloud/hosted/docs/latest/appliance/application/ao-user/vms/preparation#verify-user-access)\nor have your Project IAM Admin\n[assign](/distributed-cloud/hosted/docs/latest/appliance/application/ao-user/vms/preparation#grant-user-access-vm-resources)\nyou the Project VirtualMachine Admin (`project-vm-admin`) role in the namespace\nof the project where the VM resides.\n\nFor VM operations using the GDC console or the gdcloud CLI,\nrequest your Project IAM Admin to assign you both the\nProject VirtualMachine Admin role and the Project Viewer (`project-viewer`)\nrole.\n\nDelete a VM\n-----------\n\nDelete a VM by using the GDC console or `kubectl`. The VM must not be\nin a terminating or unknown state. \n\n### Console\n\n1. In the navigation menu, click **Virtual Machines \\\u003e Instances**.\n\n2. In the list of VMs, select the checkbox for the VM that you want to delete.\n\n3. Click **Delete**.\n\n4. In the confirmation dialog, click **Delete**.\n\n### gdcloud\n\nTo delete a VM: \n\n gdcloud compute instances delete \u003cvar translate=\"no\"\u003eVM_NAME\u003c/var\u003e --project \u003cvar translate=\"no\"\u003ePROJECT\u003c/var\u003e\n\n- Replace \u003cvar translate=\"no\"\u003eVM_NAME\u003c/var\u003e with the name of the VM.\n- Replace \u003cvar translate=\"no\"\u003ePROJECT\u003c/var\u003e with the name of the GDC project in which the VM lives.\n\n### kubectl\n\n1. Delete the VM:\n\n kubectl --kubeconfig \u003cvar translate=\"no\"\u003eMANAGEMENT_API_SERVER\u003c/var\u003e delete virtualmachines.virtualmachine.gdc.goog \u003cvar translate=\"no\"\u003eVM_NAME\u003c/var\u003e -n \u003cvar translate=\"no\"\u003eNAMESPACE_NAME\u003c/var\u003e\n\n2. Replace \u003cvar translate=\"no\"\u003eVM_NAME\u003c/var\u003e and \u003cvar translate=\"no\"\u003eNAMESPACE_NAME\u003c/var\u003e\n with the name and namespace, respectively, of the VM.\n\n3. Verify that you've deleted the VM:\n\n kubectl --kubeconfig \u003cvar translate=\"no\"\u003eMANAGEMENT_API_SERVER\u003c/var\u003e get virtualmachines.virtualmachine.gdc.goog \u003cvar translate=\"no\"\u003eVM_NAME\u003c/var\u003e -n \u003cvar translate=\"no\"\u003ePROJECT\u003c/var\u003e\n\n Replace \u003cvar translate=\"no\"\u003e\u003ccode translate=\"no\" dir=\"ltr\"\u003ePROJECT\u003c/code\u003e\u003c/var\u003e with the VM project name."]]