Självstudie: Ändra en VM-skalningsuppsättning med PowerShell
Under hela livscykeln för dina program kan du behöva ändra eller uppdatera vm-skalningsuppsättningen. Dessa uppdateringar kan omfatta hur du uppdaterar konfigurationen av skalningsuppsättningen eller ändrar programkonfigurationen. I den här artikeln beskrivs hur du ändrar en befintlig skalningsuppsättning med hjälp av PowerShell.
Uppdatera skalningsuppsättningsmodellen
En skalningsuppsättning har en "skalningsuppsättningsmodell" som fångar upp det önskade tillståndet för skalningsuppsättningen som helhet. Om du vill fråga modellen efter en skalningsuppsättning kan du använda Get-AzVmss.
Get-AzVmss -ResourceGroupName myResourceGroup -Name myScaleSet
Den exakta presentationen av utdata beror på vilka alternativ du anger för kommandot. I följande exempel visas komprimerade exempelutdata från PowerShell:
Sku :
Name : Standard_DS1_v2
Tier : Standard
Capacity : 2
ProvisioningState : Succeeded
SinglePlacementGroup : False
Id : /subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet
Name : myScaleSet
Type : Microsoft.Compute/virtualMachineScaleSets
Location : eastus
VirtualMachineProfile :
ComputerNamePrefix : myScaleSe
ProvisionVMAgent : True
EnableAutomaticUpdates : True
PatchMode : AutomaticByOS
AssessmentMode : ImageDefault
EnableVMAgentPlatformUpdates : False
AllowExtensionOperations : True
StorageProfile :
Publisher : MicrosoftWindowsServer
Offer : WindowsServer
Sku : 2016-Datacenter
Version : latest
OsDisk :
Caching : None
CreateOption : FromImage
DiskSizeGB : 127
OsType : Windows
StorageAccountType : Premium_LRS
DeleteOption : Delete
NetworkProfile :
NetworkInterfaceConfigurations[0] :
Name : myScaleSet
Primary : True
DisableTcpStateTracking : False
Name : myScaleSet
Subnet :
Id : /subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myScaleSet/subnets/myScaleSet
PrivateIPAddressVersion : IPv4
LoadBalancerBackendAddressPools[0] :
/subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Network/loadBalancers/myScaleSet/backendAddressPools/myScaleSet
EnableIPForwarding : False
DeleteOption : Delete
NetworkApiVersion : 2020-11-01
OrchestrationMode : Flexible
TimeCreated : 12/2/2022 5:41:21 PM
Du kan också använda Update-AzVmss för att uppdatera olika egenskaper för din skalningsuppsättning. Du kan till exempel uppdatera din licenstyp.
$myVmss = Get-AzVmss -ResourceGroupName myResourceGroup -Name myScaleSet
Update-AzVmss -ResourceGroupName myResourceGroup -VirtualMachineScaleSet $myVMss -VMScaleSetName myScaleSet -LicenseType Windows_Server
Uppdatera enskilda VM-instanser i en skalningsuppsättning
På samma sätt som en skalningsuppsättning har en modellvy har varje VM-instans i skalningsuppsättningen en egen modellvy. Om du vill köra frågor mot modellvyn för en viss VM-instans i en skalningsuppsättning kan du använda Get-AzVM.
Get-AzVM -ResourceGroupName myResourceGroup -name MyScaleSet_Instance1
ResourceGroupName : myResourceGroup
Id : /subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myScaleSet_Instance1
Name : myScaleSet_Instance1
Type : Microsoft.Compute/virtualMachines
Location : eastus
Extensions : {MicrosoftMonitoringAgent}
HardwareProfile : {VmSize}
NetworkProfile : {NetworkInterfaces}
OSProfile : {ComputerName, AdminUsername, WindowsConfiguration, Secrets, AllowExtensionOperations, RequireGuestProvisionSignal}
ProvisioningState : Succeeded
StorageProfile : {ImageReference, OsDisk, DataDisks}
VirtualMachineScaleSet : {Id}
TimeCreated : 12/2/2022 5:41:23 PM
Du kan också lägga till -Status
flaggan för att hämta instansvyn, som innehåller mer information om den virtuella datorn.
Get-AzVM -ResourceGroupName myResourceGroup -name MyScaleSet_Instance1 -Status
ResourceGroupName : myResourceGroup
Name : MyScaleSet_Instance1
OsName : Windows Server 2016 Datacenter
OsVersion : 10.0.14393.5501
HyperVGeneration : V1
Disks[0] :
Name : myScaleSet_Instance1_disk1_cab60acccff7414b81d60572eeecb9e3
Statuses[0] :
Code : ProvisioningState/succeeded
Level : Info
DisplayStatus : Provisioning succeeded
Time : 12/2/2022 5:41:25 PM
Disks[1] :
Name : disk1
Statuses[0] :
Code : ProvisioningState/succeeded
Level : Info
DisplayStatus : Provisioning succeeded
Time : 12/2/2022 6:33:36 PM
Extensions[0] :
Name : MicrosoftMonitoringAgent
Type : Microsoft.EnterpriseCloud.Monitoring.MicrosoftMonitoringAgent
TypeHandlerVersion : 1.0.18067.0
Statuses[0] :
Code : ProvisioningState/succeeded
Level : Info
DisplayStatus : Provisioning succeeded
Message : Latest configuration has been applied to the Microsoft Monitoring Agent.
VMAgent :
VmAgentVersion : 2.7.41491.1071
ExtensionHandlers[0] :
Type : Microsoft.EnterpriseCloud.Monitoring.MicrosoftMonitoringAgent
TypeHandlerVersion : 1.0.18067.0
Status :
Code : ProvisioningState/succeeded
Level : Info
DisplayStatus : Ready
Message : This virtual machine has successfully connected to Azure Log Analytics.
Statuses[0] :
Code : ProvisioningState/succeeded
Level : Info
DisplayStatus : Ready
Message : GuestAgent is running and processing the extensions.
Time : 12/2/2022 6:34:55 PM
Statuses[0] :
Code : ProvisioningState/succeeded
Level : Info
DisplayStatus : Provisioning succeeded
Time : 12/2/2022 6:33:42 PM
Statuses[1] :
Code : PowerState/running
Level : Info
DisplayStatus : VM running
De här egenskaperna beskriver konfigurationen av en virtuell datorinstans i en skalningsuppsättning, inte konfigurationen av skalningsuppsättningen som helhet.
Du kan utföra uppdateringar av enskilda VM-instanser i en skalningsuppsättning på samma sätt som en fristående virtuell dator. Du kan till exempel koppla en ny datadisk till instans 1:
$VirtualMachine = Get-AzVM -ResourceGroupName "myResourceGroup" -Name "myScaleSet_Instance1".
Add-AzVMDataDisk -VM $VirtualMachine -Name "disk1" -LUN 0 -Caching ReadOnly -DiskSizeinGB 128 -CreateOption Empty
Update-AzVM -ResourceGroupName "myResourceGroup" -VM $VirtualMachine
Lägga till en instans i din skalningsuppsättning
Det finns tillfällen då du kanske vill lägga till en ny virtuell dator i skalningsuppsättningen men vill ha andra konfigurationsalternativ än vad som sedan anges i skalningsuppsättningsmodellen. Virtuella datorer kan läggas till i en skalningsuppsättning när de skapas med hjälp av kommandot Get-AzVmss och ange det skalningsuppsättningsnamn som du vill att instansen ska läggas till i.
New-AzVM -Name myNewInstance -ResourceGroupName myResourceGroup -image Ubuntu2204 -VmssId /subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet
ResourceGroupName : myResourceGroup
Id : /subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myNewInstance
Name : myNewInstance
Type : Microsoft.Compute/virtualMachines
Location : eastus
Tags : {}
HardwareProfile : {VmSize}
NetworkProfile : {NetworkInterfaces}
OSProfile : {ComputerName, AdminUsername, LinuxConfiguration, Secrets, AllowExtensionOperations, RequireGuestProvisionSignal}
ProvisioningState : Succeeded
StorageProfile : {ImageReference, OsDisk, DataDisks}
FullyQualifiedDomainName : mynewinstance-21bc01.eastus.cloudapp.azure.com
VirtualMachineScaleSet : {Id}
TimeCreated : 12/2/2022 6:40:20 PM
Genom att köra Get-AzVM igen kan vi se att den nya instansen har skapats och lagts till i den befintliga skalningsuppsättningen.
Get-AzVm -ResourceGroupName myResourceGroup
ResourceGroupName Name Location VmSize OsType NIC ProvisioningState
----------------- ---- -------- ------ ------ --- -----------------
myResourceGroup myNewInstance eastus Standard_D2s_v3 Linux myNewInstance Succeeded
myResourceGroup myScaleSet_Instance1 eastus Standard_DS1_v2 Windows myScaleSet-a9f1d54c Succeeded
myResourceGroup myScaleSet_Instance2 eastus Standard_DS1_v2 Windows myScaleSet-4dc708e5 Succeeded
Bring VMs up-to-date med den senaste skalningsuppsättningsmodellen
Kommentar
Uppgraderingslägen stöds för närvarande inte i vm-skalningsuppsättningar med flexibelt orkestreringsläge.
Skalningsuppsättningar har en "uppgraderingsprincip" som avgör hur virtuella datorer är uppdaterade med den senaste skalningsuppsättningsmodellen. De tre lägena för uppgraderingsprincipen är:
- Automatisk – I det här läget ger skalningsuppsättningen inga garantier för ordningen på virtuella datorer som tas bort. Skalningsuppsättningen kan ta bort alla virtuella datorer samtidigt.
- Rullande – I det här läget distribuerar skalningsuppsättningen uppdateringen i batchar med en valfri paustid mellan batchar.
- Manuell – När du uppdaterar skalningsuppsättningsmodellen i det här läget händer ingenting med befintliga virtuella datorer förrän en manuell uppdatering utlöses.
Om skalningsuppsättningen är inställd på manuella uppgraderingar kan du utlösa en manuell uppgradering med Update-AzVmss.
$myVmss = Get-AzVmss -ResourceGroupName myResourceGroup -Name myScaleSet
Update-AzVmss -ResourceGroupName myResourceGroup -VirtualMachineScaleSet $myVMss -VMScaleSetName myScaleSet
Kommentar
Service Fabric-kluster kan bara använda automatiskt läge, men uppdateringen hanteras på olika sätt. Mer information finns i Service Fabric-programuppgraderingar.
Återskapa en skalningsuppsättning
Vm-skalningsuppsättningar genererar ett unikt namn för varje virtuell dator i skalningsuppsättningen. Namngivningskonventionen skiljer sig åt beroende på orkestreringsläge:
- Flexibelt orkestreringsläge:
{scale-set-name}_{8-char-guid}
- Enhetligt orkestreringsläge:
{scale-set-name}_{instance-id}
I de fall där du behöver återskapa en specifik instans använder du Set-AzVmss och anger instansnamnet.
Set-AzVmssVM -ResourceGroupName myResourceGroup -VMScaleSetName myScaleSet -InstanceId myScaleSet_Instance1 -Reimage
Om du vill återskapa alla instanser i en skalningsuppsättning anger du bara skalningsuppsättningens namn och utelämnar instans-ID:t.
Set-AzVmssVM -Reimage -ResourceGroupName myResourceGroup -VMScaleSetName myScaleSet
Uppdatera OS-avbildningen för skalningsuppsättningen
Du kan ha en skalningsuppsättning som kör en gammal version av Ubuntu LTS 18.04. Du vill uppdatera till en nyare version av Ubuntu LTS 16.04, till exempel version 18.04.202210180. Egenskapen för avbildningsreferensversion ingår inte i en lista, så du kan ändra dessa egenskaper direkt med Update-AzVmss.
$myVmss = Get-AzVmss -ResourceGroupName myResourceGroup -Name myScaleSet
Update-AzVmss -ResourceGroupName myResourceGroup -VirtualMachineScaleSet $myVMss -VMScaleSetName myScaleSet -ImageReferenceVersion virtualMachineProfile.storageProfile.imageReference.version=18.04.202210180
Du kan också ändra den bild som skalningsuppsättningen använder. Du kanske till exempel vill uppdatera eller ändra en anpassad avbildning som används av skalningsuppsättningen. Du kan ändra den avbildning som skalningsuppsättningen använder genom att uppdatera egenskapen för bildreferens-ID. Egenskapen för bildreferens-ID ingår inte i en lista, så du kan ändra den här egenskapen direkt med Update-AzVmss.
$myVmss = Get-AzVmss -ResourceGroupName myResourceGroup -Name myScaleSet
Update-AzVmss -ResourceGroupName myResourceGroup -VirtualMachineScaleSet $myVMss -VMScaleSetName myScaleSet -ImageReferenceVersion virtualMachineProfile.storageProfile.imageReference.id=/subscriptions/{subscriptionID}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/images/myNewImage
Om du använder Azure-plattformsavbildningar kan du uppdatera avbildningen genom att ändra imageReference (mer information finns i REST API-dokumentationen).
Kommentar
Med plattformsbilder är det vanligt att ange "senaste" för avbildningsreferensversionen. När du skapar, skalar ut och återskapar skapas virtuella datorer med den senaste tillgängliga versionen. Det innebär dock inte att OS-avbildningen uppdateras automatiskt med tiden när nya avbildningsversioner släpps. En separat funktion ger automatiska OS-uppgraderingar. Mer information finns i dokumentationen om automatiska os-uppgraderingar.
Om du använder anpassade avbildningar kan du uppdatera avbildningen genom att uppdatera imageReference-ID:t (mer information finns i REST API-dokumentationen).
Nästa steg
I den här självstudien har du lärt dig hur du ändrar olika aspekter av din skalningsuppsättning och enskilda instanser med hjälp av PowerShell.
- Uppdatera skalningsuppsättningsmodellen
- Uppdatera en enskild VM-instans i en skalningsuppsättning
- Lägga till en instans i din skalningsuppsättning
- Bring VMs up-to-date med den senaste skalningsuppsättningsmodellen
- Återskapa en skalningsuppsättning
- Uppdatera OS-avbildningen för skalningsuppsättningen