我在 azure 中部署了一个 scaleset,我需要通过 credativ 将底层 debian-image 更改为自定义图像。我发现了一些对我不起作用的好资源:
- https://msftstack.wordpress.com/2016/05/17/how-to-upgrade-an-azure-vm-scale-set-without-shutting-it-down/
- https://github.com/gbowerman/vmsstools
两篇文章都提到将基础库存图像更新为较新版本或将 uri 更改为自定义图像。但我需要从库存图像更改为自定义图像。这涉及将 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
}
这样做的方法是什么?我可以使用不同的图像重新部署规模集吗?
谢谢和问候,蒂莫
更新: 好的,我现在设法复制了 vhd。
- 使用 CLI 在规模集的 VM 上解除分配:azure vmssvm deallocate
- 使用 azure-cli 复制 blob: azure storage blob copy start --dest-account-key xxx --dest-account-name xxx
我很好奇图片中的内容。解除分配是否会重置图像?我的所有自定义设置都消失了吗?
目前不支持将 VMSS 模型从平台映像更改为自定义映像(这可能会在未来随着模型更改的开放而改变)。
以最少的停机时间执行此操作的一种方法是创建新的规模集,然后更改负载平衡器设置(即手动形式的 VIP 交换,例如将 IP 地址与一个 LB 解除关联,将其与另一个指向新的规模集)。
回复:停止解除分配,解除分配不会重置映像,因此 VHD 将是处于关闭时状态的 OS 驱动器。然后,您可以按照以下步骤从中制作另一个规模集:https ://msftstack.wordpress.com/2016/06/20/how-to-convert-an-azure-virtual-machine-to-a-vm- scale-set/ - 请注意,您需要在捕获图像之前对其进行概括(请参阅该页面上的注释)。