共用方式為

有关不推荐映像的常见问题解答

本文解答了有关 Azure 市场中映像弃用时会发生什么情况的常见问题。

收到图像废弃通知意味着什么?

当您的虚拟机(VM)或虚拟机规模集在计划弃用的映像上运行时,您会收到电子邮件通知。 发布者出于各种原因弃用映像,包括安全问题或映像生命周期结束时。

使用计划弃用的映像的虚拟机或规模集的电子邮件通知的屏幕截图。

弃用级别

弃用发生在三个级别:

  • 映像版本弃用:特定的 VM 映像版本。
  • 计划/SKU 弃用:整个计划或 SKU 及其中的所有映像版本。
  • 产品包弃用:整个 VM 产品包,包括所有计划和映像版本。

弃用时间线是什么,它如何影响我的工作负荷?

弃用时间线

通知期(实施前90天)

在通知期间:

  • 你会收到关于即将弃用的通知邮件和 Azure Advisor 建议。
  • 现有 VM 和虚拟机规模集实例继续正常运行。
  • 可以使用 Azure CLI、PowerShell 或 API 部署新实例。
  • 弃用警告显示在 Azure 门户、Azure CLI 和 API 中。
  • 可以在强制日期之前迁移或更新部署。

强制执行日期后(软删除)

生效日期之后:

  • 你会收到有关弃用强制实施的电子邮件通知和 Azure 顾问建议。
  • 阻止使用已弃用映像的新 VM 或虚拟机规模集的部署。
  • 现有 VM 实例继续运行,而不会中断。
  • 现有的虚拟机规模集部署仍可正常运行,但无法横向扩展。
  • 不能重新部署使用已弃用镜像的 VM(例如,在解除分配或发生故障后)。

影响摘要

下表汇总了镜像弃用的影响:

Action 实施日期之前 实施日期之后
现有 VM 继续正常运行 继续正常运行
现有虚拟机规模集实例 继续正常运行 继续正常运行
新的 VM 部署 允许使用,但会产生弃用警告 Blocked
新的虚拟机规模集部署 允许使用,但会产生弃用警告 Blocked
虚拟机规模集横向扩展 允许 Blocked
VM 重新部署 允许 Blocked

所需作

为了避免中断:

  • 如果希望您的虚拟机规模集在弃用后能够横向扩展,请务必在强制执行日期之前迁移到受支持的映像。
  • 如果配置了自动 OS 升级,则只有产品/服务或计划弃用会影响你,而不是单个版本弃用。

如何使用已弃用的映像查找 VM 和虚拟机规模集?

使用 Azure Resource Graph

Azure Resource Graph 中运行以下查询,以识别受影响的资源。

使用已弃用的映像查找虚拟机

resources 
| where type == "microsoft.compute/virtualmachines" 
//| where properties.storageProfile.imageReference.publisher =~ 'MicrosoftWindowsServer' //Optional: Filter by publisher
//| where properties.storageProfile.imageReference.sku =~ '2016-Datacenter' //Optional: Filter by SKU (Plan)
//| where properties.storageProfile.imageReference.version == '14393.4467.2106061537' //Optional: Filter by version
| project name, subscriptionId, resourceGroup, ImagePublisher=properties.storageProfile.imageReference.publisher, ImageOffer=properties.storageProfile.imageReference.offer, imageSku=properties.storageProfile.imageReference.sku, imageVersion=properties.storageProfile.imageReference.exactVersion

使用已弃用的映像查找虚拟机规模集

resources 
| where type == "microsoft.compute/virtualmachinescalesets" 
//| where properties.virtualMachineProfile.storageProfile.imageReference.publisher =~ 'MicrosoftWindowsServer' //Optional: Filter by publisher
//| where properties.virtualMachineProfile.storageProfile.imageReference.sku =~ '2016-Datacenter' //Optional: Filter by SKU (Plan)
//| where properties.virtualMachineProfile.storageProfile.imageReference.version == '14393.4467.2106061537' //Optional: Filter by version
//| where properties.virtualMachineProfile.storageProfile.imageReference.version != "latest" //Optional: Exclude scale sets using "latest"
| project name, subscriptionId, resourceGroup, ImagePublisher=properties.virtualMachineProfile.storageProfile.imageReference.publisher, ImageOffer=properties.virtualMachineProfile.storageProfile.imageReference.offer, imageSku=properties.virtualMachineProfile.storageProfile.imageReference.sku, imageVersion=properties.virtualMachineProfile.storageProfile.imageReference.version

使用 Azure CLI

列出已弃用套餐/SKU 的 VM

az vm show --resource-group $rgName --name $vmName --query "storageProfile.imageReference.exactVersion"
az vm list --query "[?storageProfile.imageReference.sku=='2016-Datacenter'].{VM:id, imageOffer:storageProfile.imageReference.offer, imagePublisher:StorageProfile.imageReference.publisher, imageSku: storageProfile.imageReference.sku, imageVersion:storageProfile.imageReference.version}"

列出已弃用版本的 VM

az vm list --query "[?storageProfile.imageReference.version=='14393.4402.2105052108'].{VM:id, imageOffer:storageProfile.imageReference.offer, imagePublisher:StorageProfile.imageReference.publisher, imageSku: storageProfile.imageReference.sku, imageVersion:storageProfile.imageReference.version}"

使用 PowerShell

列出已弃用版本的 VM

(Get-AzVM -ResourceGroupName $rgname -Name $vmname).StorageProfile.ImageReference.ExactVersion   

使用已弃用的版本查找虚拟机规模集

$vmsslist = Get-AzVmss
$vmsslist | Where-Object {$_.virtualMachineProfile.storageProfile.imageReference.Version -eq '14393.4402.2105052108'} | Select-Object -Property ResourceGroupName, Name, @{label='imageOffer'; expression={$_.virtualMachineProfile.storageProfile.imageReference.Offer}}, @{label='imagePublisher'; expression={$_.virtualMachineProfile.storageProfile.imageReference.Publisher}}, @{label='imageSKU'; expression={$_.virtualMachineProfile.storageProfile.imageReference.Sku}}, @{label='imageVersion'; expression={$_.virtualMachineProfile.storageProfile.imageReference.Version}}

列出具有已弃用计划/SKU 的虚拟机规模集

$vmsslist = Get-AzVmss
$vmsslist | Where-Object {$_.virtualMachineProfile.storageProfile.imageReference.Sku -eq '2016-Datacenter'} | Select-Object -Property ResourceGroupName, Name, @{label='imageOffer'; expression={$_.virtualMachineProfile.storageProfile.imageReference.Offer}}, @{label='imagePublisher'; expression={$_.virtualMachineProfile.storageProfile.imageReference.Publisher}}, @{label='imageSKU'; expression={$_.virtualMachineProfile.storageProfile.imageReference.Sku}}, @{label='imageVersion'; expression={$_.virtualMachineProfile.storageProfile.imageReference.Version}}

使用自动化脚本

运行 Get-AzVMImageDeprecationStatus.ps1,列出在订阅中使用已弃用或即将弃用映像创建的所有 VM 或虚拟机规模集。

如何迁移到其他映像?

处理已弃用的映像时,请选择以下两个选项之一。

选项 1:创建自定义映像

若要继续使用已弃用的映像,请执行以下操作:

  1. 将虚拟机通用化。
  2. 解除分配 VM。
  3. 从 VM 创建自定义映像。
  4. 更新 VM 或虚拟机规模集部署以使用自定义映像。

有关详细步骤,请参阅 在门户中捕获 VM 的映像

重要

对于已弃用的付费市场映像和购买计划信息:弃用后,由于缺少计划信息,无法创建新的 VM 工作负荷或执行 Azure Site Recovery 或备份还原操作。 迁移到支持的映像。

选项 2:迁移到另一个映像

步骤 1:查找来自同一发布服务器的备用映像

使用 Azure CLI:

# List all offers from a publisher
az vm image list --location "chinanorth2" --publisher "MicrosoftWindowsServer"

# List all plans under an offer
az vm image list --location "chinanorth2" --publisher "MicrosoftWindowsServer" --offer "WindowsServer"

# List all versions of a specific SKU
az vm image list --location "chinanorth2" --publisher "MicrosoftWindowsServer" --offer "WindowsServer" --sku "2019-Datacenter-with-Containers" --all

使用 PowerShell:

# List all offers from a publisher
Get-AzVMImage -Location "chinanorth2" -PublisherName "MicrosoftWindowsServer"

# List all plans under an offer
Get-AzVMImage -Location "chinanorth2" -PublisherName "MicrosoftWindowsServer" -Offer "WindowsServer"

# List all versions of a specific SKU
Get-AzVMImage -Location "chinanorth2" -PublisherName "MicrosoftWindowsServer" -Offer "WindowsServer" -Skus "2019-Datacenter-with-Containers"

步骤 2:测试兼容性

在迁移之前,请验证新镜像是否支持应用程序负载并能正常运行。

步骤 3:更新部署

对于虚拟机规模集(最短停机时间)

  1. 将升级策略设置为 “手动 ”或 “滚动” 以避免停机:

    • 手动:现有实例不会被重装,直到您手动升级它们。
    • 滚动:Azure 自动批量升级实例。
  2. 按照“修改 Azure 虚拟机规模集”更新镜像引用。

  3. 通过以下任一方法将所有实例升级到最新模型:

    • 升级现有实例,或
    • 使用新实例横向扩展,然后删除旧实例。
  4. 根据需要将升级策略还原到其原始设置。

  5. 启用 自动 OS 映像升级 以自动应用最新映像,而无需手动干预。

对于虚拟机

虚拟机不支持就地映像引用替换。 使用更新的映像创建新的 VM 并迁移工作负荷。

具有购买计划信息的付费市场映像会发生什么情况?

付费市场映像的重要注意事项

弃用具有购买计划信息的付费市场映像时:

  • 在映像从市场中删除后,从备份还原虚拟机可能会失败。
  • 弃用后将无法创建新的虚拟机。
  • 由于缺少计划信息,Azure Site Recovery操作失败。
  • 由于缺少计划信息,备份还原作失败。

建议的操作

使用支持的镜像创建新的虚拟机,并在停用开始日期之前迁移工作负荷。

注意

可以继续使用无需计划信息的免费 Marketplace 映像用于单一虚拟机,并可以从备份中还原这些虚拟机。 此限制仅影响付费映像,不会影响虚拟机规模集工作负荷。

免费Marketplace图片会发生什么情况?

免费市场映像(无需购买计划):

  • 现有 VM 和虚拟机规模集工作负荷将继续运行,而不会中断。
  • 可以从备份中还原虚拟机。
  • 弃用功能后,您将无法创建新的 VM 或虚拟机规模集部署。

较低于弃用版本的所有映像版本是否也被弃用?

一般来说,可以。 但是,使用 虚拟机映像 - 列表 API 对计划中列出的有效版本进行确认。

如何接收有关镜像弃用的电子邮件通知?

若要接收弃用通知,必须在订阅中具有以下角色之一:

  • 所有者
  • 帐户管理员

如何检查特定镜像是否已弃用或计划弃用?

使用 REST API

使用 虚拟机映像 - Get API 来检查弃用状态。

如果映像已弃用,则会收到以下响应:

{
  "error": {
    "code": "ImageVersionDeprecated",
    "message": "VM Image from publisher: MicrosoftWindowsServer with - Offer: WindowsServer, Sku: 2016-Datacenter, Version: 14393.4169.2101090332 is deprecated."
  }
}

使用 Azure CLI

az vm image show --location chinanorth2 --urn MicrosoftWindowsServer:WindowsServer:2016-Datacenter:14393.4169.2101090332 --query [imageDeprecationStatus]

使用 PowerShell

检查单个映像版本:

Get-AzVMImage -Location "chinanorth2" -PublisherName "MicrosoftWindowsServer" -Offer "WindowsServer" -Skus "2016-Datacenter" -Version "14393.4169.2101090332" | Select-Object -ExpandProperty "ImageDeprecationStatus"

检查具有废止详细信息的 SKU 的所有版本:

Get-AzVMImage -Location "chinanorth2" `
  -PublisherName "center-for-internet-security-inc" `
  -Offer "cis-rocky" `
  -Skus "cis-rockylinux-9-l1-gen2-azure-observability" `
  -Expand "properties/imageDeprecationStatus" |
  Select-Object Version, @{
    Name = "DeprecationDetails"
    Expression = { $_.ImageDeprecationStatus | Out-String }
  } | Format-Table -Wrap -AutoSize

使用自动化脚本

在 Cloud Shell 或本地运行 Get-AzVMImageDeprecationStatus.ps1 ,检查订阅中已弃用映像的所有 VM 和虚拟机规模集。

如果 SQL Server Azure 市场映像已弃用,SQL Server 会发生什么情况?

当 SQL Server Azure 市场映像被弃用时,您的 SQL Server 不会受影响。

  • Azure VM 将继续运行,而不会中断。
  • SQL Server 实例继续正常运行。
  • 无法使用已弃用的 SQL Server 映像部署新 VM。

现有部署不需要任何动作。

如何列出特定 SKU 当前可用的(非弃用)映像版本?

当前映像是指未计划过时或已经过时的映像。

使用 Azure CLI

az vm image list --location chinanorth2 --publisher "MicrosoftWindowsServer" --offer "WindowsServer" --sku "2022-Datacenter" --all --query "[?imageDeprecationStatus.imageState=='Active']"

使用 PowerShell

Get-AzVMImage -Location "chinanorth2" `
  -PublisherName "center-for-internet-security-inc" `
  -Offer "cis-rocky" `
  -Skus "cis-rockylinux-9-l1-gen2-azure-observability" `
  -Expand "properties/imageDeprecationStatus" |
  Where-Object { $_.ImageDeprecationStatus.ImageState -eq "Active" } |
  Select-Object Version