首页 > 解决方案 > 我如何知道 Azure VMSS 的特定实例上安装了哪个映像版本?

问题描述

我有一个带有几个实例的 Azure VMSS(虚拟机规模集),链接到“图像库”。VMSS 的配置方式是它应该始终从图像库中选择特定图像的最新版本。

我如何以及在哪里可以查看特定实例上安装了哪个版本的映像?

标签: azureazure-virtual-machine

解决方案


如果映像库配置为在新实例上安装最新映像,则映像版本可能会因实例而异。映像的实际安装版本存储在storageProfile.imageReference.exactVersionvmss 对象的属性中。

列出现有规模集中特定机器的已安装映像版本:

az vmss show --resource-group "<resource group name>" \
  --subscription "<subscription name>" \
  --name <vmss name> \
  --instance-id <instance id> \
  --query storageProfile.imageReference.exactVersion

回复与图片库中定义的版本号匹配:

"2021.06.1782103"

如果实例 ID 未知,则可以获取现有规模集的所有实例 ID

az vmss list-instances --resource-group "<resource group name>" \
  --subscription "<subscription name>" \
  --name <vmss name> \
  --query [].instanceId
[
  "1141",
  "1142",
  "1143"
]

为了进一步简化事情,可以列出现有规模集中每台机器的已安装映像版本。例如,这允许查看所有实例是否处于相同版本或是否留下一个:

az vmss list-instances --resource-group "<resource group name>" \
  --subscription "<subscription name>" \
  --name <vmss name> \
  --query [].storageProfile.imageReference.exactVersion

在一个有 3 个实例的示例中,回复可能表明两台机器在更高版本(...03)上,而一台机器仍然在图像的旧版本上(...02):

[
  "2021.06.1782102",
  "2021.06.1782103",
  "2021.06.1782103"
]

最后,结合这个也可以同时查询instanceId和安装的镜像版本

az vmss list-instances --resource-group "<resource group name>" --subscription "<subscription name>" --name <vmss name> --query "[].[instanceId,storageProfile.imageReference.exactVersion]"
[
  [
    "1141",
    "2021.06.1782102"
  ],
  [
    "1142",
    "2021.06.1782103"
  ],
  [
    "1143",
    "2021.06.1782103"
  ]
]

推荐阅读