One item you use need to adjust to is the instance naming scheme that is used by VMSS.
I was looking at the two VM Scale Sets I have setup in my environment and was surprised to see the following.
The first VM Scale Set I setup has Instances with these IDs (0 and 1):
and my second has Instances with IDs of 2 and 3:
I thought this was a bit weird that two unrelated VM Scale Sets seem to be sharing a common Instance ID source – maybe something to do with the underlying provisioning engine continuing on Instance IDs across VMSS on a VNet, or something similar?
As it turns out, this is entirely coincidental.
When you provision a VMSS and you set the "overprovision" flag to "true" the provisioning engine will build more Instances than required (you can see this if you watch in the portal while the VMSS is being provisioned) and then delete the excess above what is actually required. This is by design and is described by Microsoft on their VMSS design considerations page.
Here's a snippet of what your ARM template will look like:
So, for my scenario, it just happens that for the first VMSS that the engine deleted the Instances above Instance 1, and for the second VMSS the engine deleted Instances 0 and 1!
Too Easy! 🙂