VM scale sets

VM scale sets (VMSS) are an Azure compute resource that you can use to deploy and manage a set of identical VMs. With all VMs configured in the same way, scale sets are designed to support true auto scaling, and no pre-provisioning of VMs is required. It helps in provisioning multiple identical VMs connected to each other through a virtual network and subnet.

VMSS consists of multiple VMs, but they are managed at VMSS level.  All VMs are part of this unit and any changes made are applied to the unit, which, in turn, applies it to VMs using a pre-determined algorithm:

It allows these VMs to be load balanced using the Azure load balancer or application gateways. All the VMs could be either Windows or Linux operating systems. They can run automated scripts using a PowerShell extension and they can be managed centrally using desired state configuration. They can be monitored as a unit and individually using log analytics as well.

VMSS can be provisioned from the Azure portal, Azure command-line interface, Azure resource manager templates, REST APIs, and PowerShell cmdlets. It is possible to invoke REST APIs and Azure CLI from any platform, environment, and operating system, and in any language.

Already, a lot of Azure services use VMSS as its underlying architecture. Among them are Azure Batch, Azure Service Fabric, and Azure container services. Azure container services, in turn, provision Kubernetes and DC/OS on these VM scale sets.