Skip to content

Commit e596b64

Browse files
authored
[AKS] support MaxSurge, PPG and SpotMaxPrice (#20449)
* [AKS] support MaxSurge * [AKS] support PPG * [AKS] support SpotMaxPrice * fix test case
1 parent a0d75b0 commit e596b64

File tree

12 files changed

+9266
-29
lines changed

12 files changed

+9266
-29
lines changed

src/Aks/Aks.Test/ScenarioTests/KubernetesTests.cs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,5 +121,26 @@ public void TestLinuxOSConfig()
121121
{
122122
TestRunner.RunTestScript("Test-LinuxOSConfig");
123123
}
124+
125+
[Fact]
126+
[Trait(Category.AcceptanceType, Category.CheckIn)]
127+
public void TestMaxSurge()
128+
{
129+
TestRunner.RunTestScript("Test-MaxSurge");
130+
}
131+
132+
[Fact]
133+
[Trait(Category.AcceptanceType, Category.CheckIn)]
134+
public void TestPPG()
135+
{
136+
TestRunner.RunTestScript("Test-PPG");
137+
}
138+
139+
[Fact]
140+
[Trait(Category.AcceptanceType, Category.CheckIn)]
141+
public void TestSpot()
142+
{
143+
TestRunner.RunTestScript("Test-Spot");
144+
}
124145
}
125146
}

src/Aks/Aks.Test/ScenarioTests/KubernetesTests.ps1

Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -676,4 +676,132 @@ function Test-LinuxOSConfig {
676676
finally {
677677
Remove-AzResourceGroup -Name $resourceGroupName -Force
678678
}
679+
}
680+
681+
function Test-MaxSurge {
682+
# Setup
683+
$resourceGroupName = Get-RandomResourceGroupName
684+
$kubeClusterName = Get-RandomClusterName
685+
$location = 'eastus'
686+
$nodeVmSize = "Standard_D2_v2"
687+
688+
try {
689+
New-AzResourceGroup -Name $resourceGroupName -Location $location
690+
691+
# create aks cluster with default nodepool
692+
New-AzAksCluster -ResourceGroupName $resourceGroupName -Name $kubeClusterName -NodeVmSize $nodeVmSize -NodeCount 1 -NodeMaxSurge 1
693+
$cluster = Get-AzAksCluster -ResourceGroupName $resourceGroupName -Name $kubeClusterName
694+
Assert-AreEqual 1 $cluster.AgentPoolProfiles.Count
695+
Assert-AreEqual 1 $cluster.AgentPoolProfiles[0].UpgradeSettings.MaxSurge
696+
$pools = Get-AzAksNodePool -ResourceGroupName $resourceGroupName -ClusterName $kubeClusterName
697+
Assert-AreEqual 1 $pools.Count
698+
Assert-AreEqual 1 $pools[0].UpgradeSettings.MaxSurge
699+
700+
# create a 2nd nodepool
701+
New-AzAksNodePool -ResourceGroupName $resourceGroupName -ClusterName $kubeClusterName -Name pool2 -VmSize $nodeVmSize -Count 1 -MaxSurge "50%"
702+
$cluster = Get-AzAksCluster -ResourceGroupName $resourceGroupName -Name $kubeClusterName
703+
Assert-AreEqual 2 $cluster.AgentPoolProfiles.Count
704+
Assert-AreEqual 1 ($cluster.AgentPoolProfiles | where {$_.Name -eq "default"}).UpgradeSettings.MaxSurge
705+
Assert-AreEqual "50%" ($cluster.AgentPoolProfiles | where {$_.Name -eq "pool2"}).UpgradeSettings.MaxSurge
706+
$pools = Get-AzAksNodePool -ResourceGroupName $resourceGroupName -ClusterName $kubeClusterName
707+
Assert-AreEqual 2 $pools.Count
708+
Assert-AreEqual 1 ($pools | where {$_.Name -eq "default"}).UpgradeSettings.MaxSurge
709+
Assert-AreEqual "50%" ($pools | where {$_.Name -eq "pool2"}).UpgradeSettings.MaxSurge
710+
711+
# update the 2nd nodepool
712+
Update-AzAksNodePool -ResourceGroupName $resourceGroupName -ClusterName $kubeClusterName -Name pool2 -MaxSurge "100%"
713+
$cluster = Get-AzAksCluster -ResourceGroupName $resourceGroupName -Name $kubeClusterName
714+
Assert-AreEqual 2 $cluster.AgentPoolProfiles.Count
715+
Assert-AreEqual 1 ($cluster.AgentPoolProfiles | where {$_.Name -eq "default"}).UpgradeSettings.MaxSurge
716+
Assert-AreEqual "100%" ($cluster.AgentPoolProfiles | where {$_.Name -eq "pool2"}).UpgradeSettings.MaxSurge
717+
$pools = Get-AzAksNodePool -ResourceGroupName $resourceGroupName -ClusterName $kubeClusterName
718+
Assert-AreEqual 2 $pools.Count
719+
Assert-AreEqual 1 ($pools | where {$_.Name -eq "default"}).UpgradeSettings.MaxSurge
720+
Assert-AreEqual "100%" ($pools | where {$_.Name -eq "pool2"}).UpgradeSettings.MaxSurge
721+
722+
$cluster | Remove-AzAksCluster -Force
723+
}
724+
finally {
725+
Remove-AzResourceGroup -Name $resourceGroupName -Force
726+
}
727+
}
728+
729+
function Test-PPG {
730+
# Setup
731+
$resourceGroupName = Get-RandomResourceGroupName
732+
$kubeClusterName = Get-RandomClusterName
733+
$location = 'eastus'
734+
$nodeVmSize = "Standard_D2_v2"
735+
736+
try {
737+
New-AzResourceGroup -Name $resourceGroupName -Location $location
738+
739+
#$ppg = New-AzProximityPlacementGroup -Location $location -Name "test_ppg" -ResourceGroupName $resourceGroupName -ProximityPlacementGroupType Standard
740+
#$ppgId = $ppg.Id
741+
$ppgId = "/subscriptions/0b1f6471-1bf0-4dda-aec3-cb9272f09590/resourceGroups/rgps5787/providers/Microsoft.Compute/proximityPlacementGroups/test_ppg"
742+
743+
# create aks cluster with default nodepool
744+
New-AzAksCluster -ResourceGroupName $resourceGroupName -Name $kubeClusterName -NodeVmSize $nodeVmSize -NodeCount 1 -PPG $ppgId
745+
$cluster = Get-AzAksCluster -ResourceGroupName $resourceGroupName -Name $kubeClusterName
746+
Assert-AreEqual 1 $cluster.AgentPoolProfiles.Count
747+
Assert-AreEqual $ppgId $cluster.AgentPoolProfiles[0].ProximityPlacementGroupID
748+
$pools = Get-AzAksNodePool -ResourceGroupName $resourceGroupName -ClusterName $kubeClusterName
749+
Assert-AreEqual 1 $pools.Count
750+
Assert-AreEqual $ppgId $pools[0].ProximityPlacementGroupID
751+
752+
# create a 2nd nodepool
753+
New-AzAksNodePool -ResourceGroupName $resourceGroupName -ClusterName $kubeClusterName -Name pool2 -VmSize $nodeVmSize -Count 1 -PPG $ppgId
754+
$cluster = Get-AzAksCluster -ResourceGroupName $resourceGroupName -Name $kubeClusterName
755+
Assert-AreEqual 2 $cluster.AgentPoolProfiles.Count
756+
Assert-AreEqual $ppgId $cluster.AgentPoolProfiles[0].ProximityPlacementGroupID
757+
Assert-AreEqual $ppgId $cluster.AgentPoolProfiles[1].ProximityPlacementGroupID
758+
$pools = Get-AzAksNodePool -ResourceGroupName $resourceGroupName -ClusterName $kubeClusterName
759+
Assert-AreEqual 2 $pools.Count
760+
Assert-AreEqual $ppgId $pools[0].ProximityPlacementGroupID
761+
Assert-AreEqual $ppgId $pools[1].ProximityPlacementGroupID
762+
763+
$cluster | Remove-AzAksCluster -Force
764+
}
765+
finally {
766+
Remove-AzResourceGroup -Name $resourceGroupName -Force
767+
}
768+
}
769+
770+
function Test-Spot {
771+
# Setup
772+
$resourceGroupName = Get-RandomResourceGroupName
773+
$kubeClusterName = Get-RandomClusterName
774+
$location = 'eastus'
775+
$nodeVmSize = "Standard_D2_v2"
776+
777+
try {
778+
New-AzResourceGroup -Name $resourceGroupName -Location $location
779+
780+
# create aks cluster with default nodepool
781+
New-AzAksCluster -ResourceGroupName $resourceGroupName -Name $kubeClusterName -NodeVmSize $nodeVmSize -NodeCount 1
782+
783+
# create a 2nd nodepool
784+
New-AzAksNodePool -ResourceGroupName $resourceGroupName -ClusterName $kubeClusterName -Name pool2 -VmSize $nodeVmSize -Count 1 -ScaleSetPriority Spot -SpotMaxPrice 0.577
785+
$cluster = Get-AzAksCluster -ResourceGroupName $resourceGroupName -Name $kubeClusterName
786+
Assert-AreEqual 2 $cluster.AgentPoolProfiles.Count
787+
Assert-AreEqual "Spot" ($cluster.AgentPoolProfiles | where {$_.Name -eq "pool2"}).scaleSetPriority
788+
Assert-AreEqual "Delete" ($cluster.AgentPoolProfiles | where {$_.Name -eq "pool2"}).scaleSetEvictionPolicy
789+
Assert-AreEqual 0.57699 ($cluster.AgentPoolProfiles | where {$_.Name -eq "pool2"}).spotMaxPrice
790+
Assert-AreEqual "spot" ($cluster.AgentPoolProfiles | where {$_.Name -eq "pool2"}).nodeLabels["kubernetes.azure.com/scalesetpriority"]
791+
Assert-AreEqual 1 ($cluster.AgentPoolProfiles | where {$_.Name -eq "pool2"}).nodeTaints.Count
792+
Assert-AreEqual "kubernetes.azure.com/scalesetpriority=spot:NoSchedule" ($cluster.AgentPoolProfiles | where {$_.Name -eq "pool2"}).nodeTaints[0]
793+
$pools = Get-AzAksNodePool -ResourceGroupName $resourceGroupName -ClusterName $kubeClusterName
794+
Assert-AreEqual 2 $pools.Count
795+
Assert-AreEqual "Spot" ($pools | where {$_.Name -eq "pool2"}).scaleSetPriority
796+
Assert-AreEqual "Delete" ($pools | where {$_.Name -eq "pool2"}).scaleSetEvictionPolicy
797+
Assert-AreEqual 0.57699 ($pools | where {$_.Name -eq "pool2"}).spotMaxPrice
798+
Assert-AreEqual "spot" ($pools | where {$_.Name -eq "pool2"}).nodeLabels["kubernetes.azure.com/scalesetpriority"]
799+
Assert-AreEqual 1 ($pools | where {$_.Name -eq "pool2"}).nodeTaints.Count
800+
Assert-AreEqual "kubernetes.azure.com/scalesetpriority=spot:NoSchedule" ($pools | where {$_.Name -eq "pool2"}).nodeTaints[0]
801+
802+
$cluster | Remove-AzAksCluster -Force
803+
}
804+
finally {
805+
Remove-AzResourceGroup -Name $resourceGroupName -Force
806+
}
679807
}

0 commit comments

Comments
 (0)