更新 Azure scaleset - 从预建图像切换到自定义图像

更新 Azure scaleset - 从预建图像切换到自定义图像

我在 Azure 中部署了一个规模集,我需要将 credativ 的底层 debian-image 更改为自定义映像。我发现了一些对我来说不太适用的好资源:

两篇文章都提到要么将底层 stock-image 更新为较新版本,要么将 uri 更改为 custom-image。但我需要从 stock-image 更改为 custom-image。这涉及将 json-template 从

storageProfile : {
"imageReference" : {
    publisher : [variables('imagePublisher')],
    offer : [variables('imageOffer')],
    sku : [variables('sku')],
    version : [variables('imageVersion')]
},
osDisk : {
    name : [concat(variables('vmssName'), 'osdisk')],
    vhdContainers : [
        [concat('https://', variables('uniqueStringArray')[0], variables('newStorageAccountSuffix'), '.blob.core.windows.net/', variables('vhdContainerName'))],
        [concat('https://', variables('uniqueStringArray')[1], variables('newStorageAccountSuffix'), '.blob.core.windows.net/', variables('vhdContainerName'))],
        [concat('https://', variables('uniqueStringArray')[2], variables('newStorageAccountSuffix'), '.blob.core.windows.net/', variables('vhdContainerName'))],
        [concat('https://', variables('uniqueStringArray')[3], variables('newStorageAccountSuffix'), '.blob.core.windows.net/', variables('vhdContainerName'))],
        [concat('https://', variables('uniqueStringArray')[4], variables('newStorageAccountSuffix'), '.blob.core.windows.net/', variables('vhdContainerName'))]
    ],
    caching : ReadOnly,
    createOption : FromImage
}}

像这样:

osDisk : {
name : [concat(variables('vmssName'), 'osdisk')],
vhdContainers : [
    [concat('https://', variables('uniqueStringArray')[0], variables('newStorageAccountSuffix'), '.blob.core.windows.net/', variables('vhdContainerName'))],
    [concat('https://', variables('uniqueStringArray')[1], variables('newStorageAccountSuffix'), '.blob.core.windows.net/', variables('vhdContainerName'))],
    [concat('https://', variables('uniqueStringArray')[2], variables('newStorageAccountSuffix'), '.blob.core.windows.net/', variables('vhdContainerName'))],
    [concat('https://', variables('uniqueStringArray')[3], variables('newStorageAccountSuffix'), '.blob.core.windows.net/', variables('vhdContainerName'))],
    [concat('https://', variables('uniqueStringArray')[4], variables('newStorageAccountSuffix'), '.blob.core.windows.net/', variables('vhdContainerName'))]
],
caching : ReadOnly,
createOption : FromImage,
"osType" : "Linux",
uri : https : //storageaccount.blob.core.windows.net/tstclstrvhd/my.vhd

}

有什么办法吗?我可以用不同的图像重新部署规模集吗?

谢谢并问候,Timo

更新: 好的,我现在成功复制了 vhd。

  1. 使用 CLI 在规模集的 VM 上解除分配:azure vmssvm deallocate
  2. 使用 azure-cli 复制 blob:azure storage blob copy start --dest-account-key xxx --dest-account-name xxx

我很好奇图片里有什么。解除分配会重置图片吗?我的所有自定义设置都消失了吗?

答案1

目前不支持将 VMSS 模型从平台映像更改为自定义映像(随着模型变化的进一步开放,这种情况将来可能会改变)。

以最少的停机时间实现此目的的一种方法是创建新的规模集,然后更改负载均衡器设置(即手动形式的 VIP 交换,例如取消一个 LB 的 IP 地址关联,将其与指向新规模集的另一个 LB 关联)。

回复:停止释放,释放不会重置映像,因此 VHD 将成为关闭时处于状态的 OS 驱动器。然后,您可以按照以下步骤从中创建另一个规模集:https://msftstack.wordpress.com/2016/06/20/how-to-convert-an-azure-virtual-machine-to-a-vm-scale-set/- 请注意,您需要在捕获图像之前对其进行概括(请参阅该页面上的注释)。

相关内容