我们可以用Update-AzureRmVmss
and Update-AzureRmVmssInstance
升级 VMSS 实例。
如果我们想使用自定义映像来升级Azure VMSS实例,我们应该确保此VMSS是由自定义映像创建的。
如果我们从 Azure 市场创建 VMSS,则无法使用自定义映像来升级 Azure VMSS 实例。
这是我的测试:
1.我通过自定义镜像创建VMSS,并使用VMSStemplate https://github.com/Azure/azure-quickstart-templates/tree/master/201-vmss-windows-customimage创建它(托管磁盘)。
2、创建另一个VM镜像,并使用此脚本获取$vmss,并使用Powershell升级VMSS实例:
$rgname = "vmsss"
$vmssname = "jasonvmss"
$instanceid = "1"
$newimagereference = "/subscriptions/5384xxxx-xxxx-xxxx-xxxx-xxxxe29axxxx/resourceGroups/jasonwin/providers/Microsoft.Compute/images/myImage"
$vmss = Get-AzureRmVmss -ResourceGroupName $rgname -VMScaleSetName $vmssname
$vmss.virtualMachineProfile.storageProfile.imageReference.id = $newImageReference
Update-AzureRmVmss -ResourceGroupName $rgname -Name $vmssname -VirtualMachineScaleSet $vmss
Update-AzureRmVmssInstance -ResourceGroupName $rgname -VMScaleSetName $vmssname -InstanceId $instanceId
这是我的屏幕截图:
我们还可以找到 VMSS 实例的状态:
因此,作为解决方法,我们可以使用模板或 PowerShell 来创建 Azure VMSS带有自定义图像,然后使用此脚本升级 Azure VMSS 实例。
Note:在我的测试中,我使用模板创建 VMSS 是托管磁盘,所以我们应该使用$vmss.virtualMachineProfile.storageProfile.imageReference.id
如果你创建的VMSS是非托管磁盘,我们应该使用这个$vmss.virtualMachineProfile.storageProfile.osDisk.image.uri= $newURI
.
这里是官方关于升级VMSS实例的文章,请参考it https://learn.microsoft.com/en-us/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-upgrade-scale-set.