教程:使用 Azure CLI 创建和管理 Linux VM

注意

本文引用了 CentOS,这是一个接近生命周期结束 (EOL) 状态的 Linux 发行版。 请相应地考虑你的使用和规划。

适用于:✔️ Linux VM ✔️ 灵活规模集

Azure 虚拟机提供完全可配置的灵活计算环境。 本教程介绍 Azure 虚拟机的基本部署项目,例如选择 VM 大小、选择 VM 映像和部署 VM。 学习如何:

  • 创建并连接到 VM
  • 选择并使用 VM 映像
  • 查看和使用特定 VM 大小
  • 调整 VM 的大小
  • 查看并了解 VM 状态

注意

在可以在由世纪互联运营的 Microsoft Azure 中使用 Azure CLI 之前,请先运行 az cloud set -n AzureChinaCloud 来更改云环境。 若要切换回 Azure 公有云,请再次运行 az cloud set -n AzureCloud

如果选择在本地安装并使用 CLI,本教程要求运行 Azure CLI 2.0.30 或更高版本。 运行 az --version 即可查找版本。 如果需要进行安装或升级,请参阅安装 Azure CLI

创建资源组

使用“az group create”命令创建资源组。

Azure 资源组是在其中部署和管理 Azure 资源的逻辑容器。 必须在创建虚拟机前创建资源组。 在此示例中,在“chinaeast” 区域中创建了名为“myResourceGroupVM” 的资源组。

az group create --name myResourceGroupVM --location chinaeast

创建或修改 VM 时指定资源组,本教程会对此进行演示。

创建虚拟机

使用 az vm create 命令创建虚拟机。

创建虚拟机时,可使用多个选项,例如操作系统映像、磁盘大小调整和管理凭据。 以下示例创建一个名为 myVM 的 VM,它运行 SUSE Linux Enterprise Server (SLES)。 将在该 VM 上创建名为 azureuser 的用户帐户,并生成 SSH 密钥(如果这些密钥在默认密钥位置 ( ~/.ssh) 中不存在):

az vm create \
    --resource-group myResourceGroupVM \
    --name myVM \
    --image SLES \
    --public-ip-sku Standard \
    --admin-username azureuser \
    --generate-ssh-keys

创建 VM 可能需要几分钟。 创建 VM 后,Azure CLI 会输出有关 VM 的信息。 请记下 publicIpAddress,可以使用此地址访问虚拟机。

{
  "fqdns": "",
  "id": "/subscriptions/d5b9d4b7-6fc1-0000-0000-000000000000/resourceGroups/myResourceGroupVM/providers/Microsoft.Compute/virtualMachines/myVM",
  "location": "chinaeast",
  "macAddress": "00-0D-3A-23-9A-49",
  "powerState": "VM running",
  "privateIpAddress": "10.0.0.4",
  "publicIpAddress": "52.174.34.95",
  "resourceGroup": "myResourceGroupVM"
}

连接到 VM

现在可以使用 SSH 从本地计算机连接到 VM。 将示例 IP 地址替换为上一步骤中记下的 publicIpAddress

ssh azureuser@52.174.34.95

登录 VM 后,可以安装和配置应用程序。 完成后,可按正常方式关闭 SSH 会话:

exit

了解 VM 映像

Azure 市场包括许多可用于创建 VM 的映像。 在之前的步骤中,使用 Ubuntu 映像创建了虚拟机。 在此步骤中,使用 Azure CLI 在市场中搜索 CentOS 映像,此映像稍后用于部署第二个虚拟机。

若要查看最常用映像的列表,请使用 az vm image list 命令。

az vm image list --output table

命令输出返回 Azure 上最常用的 VM 映像。

Architecture    Offer                         Publisher               Sku                                 Urn                                                                             UrnAlias                 Version
--------------  ----------------------------  ----------------------  ----------------------------------  ------------------------------------------------------------------------------  -----------------------  ---------
x64             CentOS                        OpenLogic               7.5                                 OpenLogic:CentOS:7.5:latest                                                     CentOS                   latest
x64             debian-10                     Debian                  10                                  Debian:debian-10:10:latest                                                      Debian                   latest
x64             flatcar-container-linux-free  kinvolk                 stable                              kinvolk:flatcar-container-linux-free:stable:latest                              Flatcar                  latest
x64             opensuse-leap-15-3            SUSE                    gen2                                SUSE:opensuse-leap-15-3:gen2:latest                                             openSUSE-Leap            latest
x64             RHEL                          RedHat                  7-LVM                               RedHat:RHEL:7-LVM:latest                                                        RHEL                     latest
x64             sles-15-sp3                   SUSE                    gen2                                SUSE:sles-15-sp3:gen2:latest                                                    SLES                     latest
x64             UbuntuServer                  Canonical               18.04-LTS                           Canonical:UbuntuServer:18.04-LTS:latest                                         UbuntuLTS                latest
x64             WindowsServer                 MicrosoftWindowsServer  2022-Datacenter                     MicrosoftWindowsServer:WindowsServer:2022-Datacenter:latest                     Win2022Datacenter        latest
x64             WindowsServer                 MicrosoftWindowsServer  2022-datacenter-azure-edition-core  MicrosoftWindowsServer:WindowsServer:2022-datacenter-azure-edition-core:latest  Win2022AzureEditionCore  latest
x64             WindowsServer                 MicrosoftWindowsServer  2019-Datacenter                     MicrosoftWindowsServer:WindowsServer:2019-Datacenter:latest                     Win2019Datacenter        latest
x64             WindowsServer                 MicrosoftWindowsServer  2016-Datacenter                     MicrosoftWindowsServer:WindowsServer:2016-Datacenter:latest                     Win2016Datacenter        latest
x64             WindowsServer                 MicrosoftWindowsServer  2012-R2-Datacenter                  MicrosoftWindowsServer:WindowsServer:2012-R2-Datacenter:latest                  Win2012R2Datacenter      latest
x64             WindowsServer                 MicrosoftWindowsServer  2012-Datacenter                     MicrosoftWindowsServer:WindowsServer:2012-Datacenter:latest                     Win2012Datacenter        latest
x64             WindowsServer                 MicrosoftWindowsServer  2008-R2-SP1                         MicrosoftWindowsServer:WindowsServer:2008-R2-SP1:latest                         Win2008R2SP1             latest

可以通过添加 --all 参数查看完整列表。 还可以按 --publisher--offer 筛选映像列表。 在此示例中,已筛选列表以显示所有由 OpenLogic 发布的映像,以及与 CentOS 匹配的项。

az vm image list --offer CentOS --publisher OpenLogic --all --output table

部分输出示例:

Architecture    Offer                      Publisher    Sku              Urn                                                       Version
--------------  -------------------------  -----------  ---------------  --------------------------------------------------------  ---------------
x64             CentOS                     OpenLogic    8_2              OpenLogic:CentOS:8_2:8.2.2020111800                       8.2.2020111800
x64             CentOS                     OpenLogic    8_2-gen2         OpenLogic:CentOS:8_2-gen2:8.2.2020062401                  8.2.2020062401
x64             CentOS                     OpenLogic    8_2-gen2         OpenLogic:CentOS:8_2-gen2:8.2.2020100601                  8.2.2020100601
x64             CentOS                     OpenLogic    8_2-gen2         OpenLogic:CentOS:8_2-gen2:8.2.2020111801                  8.2.2020111801
x64             CentOS                     OpenLogic    8_3              OpenLogic:CentOS:8_3:8.3.2020120900                       8.3.2020120900
x64             CentOS                     OpenLogic    8_3              OpenLogic:CentOS:8_3:8.3.2021020400                       8.3.2021020400
x64             CentOS                     OpenLogic    8_3-gen2         OpenLogic:CentOS:8_3-gen2:8.3.2020120901                  8.3.2020120901
x64             CentOS                     OpenLogic    8_3-gen2         OpenLogic:CentOS:8_3-gen2:8.3.2021020401                  8.3.2021020401
x64             CentOS                     OpenLogic    8_4              OpenLogic:CentOS:8_4:8.4.2021071900                       8.4.2021071900
x64             CentOS                     OpenLogic    8_4-gen2         OpenLogic:CentOS:8_4-gen2:8.4.2021071901                  8.4.2021071901
x64             CentOS                     OpenLogic    8_5              OpenLogic:CentOS:8_5:8.5.2022012100                       8.5.2022012100
x64             CentOS                     OpenLogic    8_5              OpenLogic:CentOS:8_5:8.5.2022101800                       8.5.2022101800
x64             CentOS                     OpenLogic    8_5-gen2         OpenLogic:CentOS:8_5-gen2:8.5.2022012101                  8.5.2022012101

注意

Canonical 更改了他们用于最新版本的套餐名称。 在 Ubuntu 20.04 之前,套餐名称为 UbuntuServer。 对于 Ubuntu 20.04,套餐名称为 0001-com-ubuntu-server-focal,对于 Ubuntu 22.04,其名称为 0001-com-ubuntu-server-jammy

若要使用特定的映像部署 VM,请记下“Urn”列中的值,包括发布者、产品/服务、SKU,以及用于标识映像的版本号(可选)。 指定映像时,可将映像版本号替换为 latest,这会选择最新的发行版。 在此示例中,--image 参数用于指定最新版本的 CentOS 8.5。

az vm create --resource-group myResourceGroupVM --name myVM2 --image OpenLogic:CentOS:8_5:latest --generate-ssh-keys

了解 VM 大小

虚拟机大小决定虚拟机可用计算资源(如 CPU、GPU 和内存)的数量。 需要根据预期的工作负载适当调整虚拟机的大小。 如果工作负荷增加,可调整现有虚拟机的大小。

VM 大小

下表将大小分类成了多个用例。

类型 说明
常规用途 CPU 与内存之比均衡。 适用于开发/测试、小到中型应用程序和数据解决方案。
计算优化 高 CPU 与内存之比。 适用于中等流量的应用程序、网络设备和批处理。
内存优化 较高的内存核心比。 适用于关系数据库、中到大型缓存和内存中分析。
存储优化 高磁盘吞吐量和 IO。 适用于大数据、SQL 和 NoSQL 数据库。
GPU 专门针对大量图形绘制和视频编辑的 VM。
高性能 功能极其强大的 CPU VM 具有可选的高吞吐量网络接口 (RDMA)。

查找可用的 VM 大小

若要查看在特定区域可用的 VM 大小的列表,请使用 az vm list-sizes 命令。

az vm list-sizes --location chinaeast --output table

部分输出示例:

  MaxDataDiskCount    MemoryInMb  Name                      NumberOfCores    OsDiskSizeInMb    ResourceDiskSizeInMb
------------------  ------------  ----------------------  ---------------  ----------------  ----------------------
                 2          3584  Standard_DS1                          1           1047552                    7168
                 4          7168  Standard_DS2                          2           1047552                   14336
                 8         14336  Standard_DS3                          4           1047552                   28672
                16         28672  Standard_DS4                          8           1047552                   57344
                 4         14336  Standard_DS11                         2           1047552                   28672
                 8         28672  Standard_DS12                         4           1047552                   57344
                16         57344  Standard_DS13                         8           1047552                  114688
                32        114688  Standard_DS14                        16           1047552                  229376
                 1           768  Standard_A0                           1           1047552                   20480
                 2          1792  Standard_A1                           1           1047552                   71680
                 4          3584  Standard_A2                           2           1047552                  138240
                 8          7168  Standard_A3                           4           1047552                  291840
                 4         14336  Standard_A5                           2           1047552                  138240
                16         14336  Standard_A4                           8           1047552                  619520
                 8         28672  Standard_A6                           4           1047552                  291840
                16         57344  Standard_A7                           8           1047552                  619520

创建具有特定大小的 VM

在前面的 VM 创建示例中未提供大小,因此会使用默认大小。 可以在创建时使用 az vm create--size 参数选择 VM 大小。

az vm create \
    --resource-group myResourceGroupVM \
    --name myVM3 \
    --image SLES \
    --size Standard_D2ds_v4  \
    --generate-ssh-keys

调整 VM 的大小

部署 VM 后,可调整其大小以增加或减少资源分配。 可通过 az vm show 查看 VM 的当前大小:

az vm show --resource-group myResourceGroupVM --name myVM --query hardwareProfile.vmSize

调整 VM 大小之前,请检查所需的大小在当前 Azure 群集上是否可用。 az vm list-vm-resize-options 命令返回大小列表。

az vm list-vm-resize-options --resource-group myResourceGroupVM --name myVM --query [].name

如果所需大小可用,则可从开机状态调整 VM 大小,但需在此操作期间重启 VM。 使用 az vm resize 命令执行大小调整。

az vm resize --resource-group myResourceGroupVM --name myVM --size Standard_D4s_v3

如果所需大小在当前群集上不可用,则需解除分配 VM,然后才能执行调整大小操作。 使用 az vm deallocate 命令停止和解除分配 VM。 请注意,重新打开 VM 的电源时,临时磁盘上的所有数据可能已删除。 除非使用静态 IP 地址,否则公共 IP 地址也会更改。

az vm deallocate --resource-group myResourceGroupVM --name myVM

解除分配后,可进行大小调整。

az vm resize --resource-group myResourceGroupVM --name myVM --size Standard_GS1

调整大小后,可以启动 VM。

az vm start --resource-group myResourceGroupVM --name myVM

VM 电源状态

Azure VM 可能会处于多种电源状态之一。 从虚拟机监控程序的角度来看,此状态表示 VM 的当前状态。

电源状态

电源状态 说明
正在启动 指示正在启动虚拟机。
正在运行 指示虚拟机正在运行。
正在停止 指示正在停止虚拟机。
已停止 指示虚拟机已停止。 虚拟机处于停止状态时仍会产生计算费用。
正在解除分配 指示正在解除分配虚拟机。
已解除分配 指示虚拟机已从虚拟机监控程序中删除,但仍可在控制面板中使用。 处于“已解除分配”状态的虚拟机不会产生计算费用。
- 指示虚拟机的电源状态未知。

查找电源状态

若要检索特定 VM 的状态,请使用 az vm get-instance-view 命令。 请确保为虚拟机和资源组指定有效的名称。

az vm get-instance-view \
    --name myVM \
    --resource-group myResourceGroupVM \
    --query instanceView.statuses[1] --output table

输出:

Code                Level    DisplayStatus
------------------  -------  ---------------
PowerState/running  Info     VM running

若要检索订阅中所有 VM 的电源状态,请使用虚拟机 - 列出所有 API,并将参数 statusOnly 设置为 true。

管理任务

在虚拟机生命周期中,可能需要运行管理任务,例如启动、停止或删除虚拟机。 此外,可能还需要创建脚本来自动执行重复或复杂的任务。 使用 Azure CLI,可从命令行或脚本运行许多常见的管理任务。

获取 IP 地址

此命令返回虚拟机的私有 IP 地址和公共 IP 地址。

az vm list-ip-addresses --resource-group myResourceGroupVM --name myVM --output table

停止虚拟机

az vm stop --resource-group myResourceGroupVM --name myVM

启动虚拟机

az vm start --resource-group myResourceGroupVM --name myVM

删除 VM 资源

根据你删除 VM 的方式,可能只会删除 VM 资源,而不会删除网络和磁盘资源。 可以将默认行为更改为在删除该 VM 时删除其他资源。 有关详细信息,请参阅删除 VM 和附加资源

删除资源组后还会删除其中的所有资源,例如 VM、虚拟网络和磁盘。 --no-wait 参数会使光标返回提示符处,无需等待操作完成。 --yes 参数将确认是否希望删除资源,而不会有额外提示。

az group delete --name myResourceGroupVM --no-wait --yes

后续步骤

在本教程中,你已学习 VM 创建和管理的基本知识,例如如何:

  • 创建并连接到 VM
  • 选择并使用 VM 映像
  • 查看和使用特定 VM 大小
  • 调整 VM 的大小
  • 查看并了解 VM 状态

请转到下一教程,了解 VM 磁盘。