Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add pipeline for konnectivity agent autoscaler performance #444

Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 40 additions & 0 deletions pipelines/perf-eval/CRI Autoscale Benchmark/cri-autoscale.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
trigger: none
#schedules:

Check failure on line 2 in pipelines/perf-eval/CRI Autoscale Benchmark/cri-autoscale.yml

View workflow job for this annotation

GitHub Actions / yaml-validation

2:3 [comments-indentation] comment not indented like content
#- cron: "0 */12 * * *"
# displayName: "Every 12 Hours"
# branches:
# include:
# - main
# always: true

variables:
SCENARIO_TYPE: perf-eval
SCENARIO_NAME: konnectivity-autoscale
SCENARIO_VERSION: main

stages:
- stage: azure_eastus
dependsOn: []
jobs:
- template: /jobs/competitive-test.yml
parameters:
cloud: azure
regions:
- westeurope
engine: clusterloader2
engine_input:
image: "ghcr.io/azure/clusterloader2:v20241016"
topology: cri-autoscale
matrix:
n10:
node_count: 10
scale_up_timeout: "10m"
scale_down_timeout: "10m"
n100:
node_count: 100
scale_up_timeout: "15m"
scale_down_timeout: "15m"
max_parallel: 2
timeout_in_minutes: 240
credential_type: service_connection
ssh_key_enabled: false
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
scenario_type = "perf-eval"
scenario_name = "konnectivity-autoscale"
deletion_delay = "240h"
owner = "aks"

network_config_list = [
{
role = "konnectivity"
vnet_name = "cri-autoscale-vnet"
vnet_address_space = "10.0.0.0/9"
subnet = [
{
name = "cri-autoscale-subnet-1"
address_prefix = "10.0.0.0/22"
}
]
network_security_group_name = ""
nic_public_ip_associations = []
nsr_rules = []
}
]

aks_config_list = [
{
role = "konnectivity"
aks_name = "konnectivity-autoscale"
dns_prefix = "cl2"
subnet_name = "aks-network"
sku_tier = "Standard"
network_profile = {
network_plugin = "azure"
network_plugin_mode = "overlay"
kartikjoshi21 marked this conversation as resolved.
Show resolved Hide resolved
}
default_node_pool = {
name = "default"
node_count = 3
vm_size = "Standard_D16s_v3"
os_disk_type = "Managed"
only_critical_addons_enabled = true
temporary_name_for_rotation = "defaulttmp"
}
extra_node_pool = [
{
kartikjoshi21 marked this conversation as resolved.
Show resolved Hide resolved
name = "prompool"
node_count = 1
auto_scaling_enabled = false
vm_size = "Standard_D16_v3"
node_labels = { "prometheus" = "true" }
},
{
name = "userpool"
node_count = 1
min_count = 0
max_count = 1000
auto_scaling_enabled = true
vm_size = "Standard_D16s_v3"
max_pods = 110
}
]
kubernetes_version = "1.30"
}
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"run_id": "1234567890",
"region": "eastus",
}
25 changes: 25 additions & 0 deletions steps/engine/clusterloader2/cri-autoscale/collect.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
parameters:
- name: cloud
type: string
default: ''
- name: engine_input
type: object
default: {}
- name: region
type: string

steps:
- template: /steps/cloud/${{ parameters.cloud }}/collect-cloud-info.yml
parameters:
region: ${{ parameters.region }}
- script: |
set -eo pipefail

PYTHONPATH=$PYTHONPATH:$(pwd) python3 $PYTHON_SCRIPT_FILE collect \
$NODE_COUNT $CL2_REPORT_DIR $RESULT_FILE
workingDirectory: modules/python/clusterloader2
env:
CLOUD: ${{ parameters.cloud }}
PYTHON_SCRIPT_FILE: $(Pipeline.Workspace)/s/modules/python/clusterloader2/cri-autoscale/cri-autoscale.py
CL2_REPORT_DIR: $(Pipeline.Workspace)/s/modules/python/clusterloader2/cri-autoscale/results
displayName: "Collect Node Count, Agent Pod Count, and CPU Usage"
29 changes: 29 additions & 0 deletions steps/engine/clusterloader2/cri-autoscale/execute.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
parameters:
- name: cloud
type: string
default: ''
- name: engine_input
type: object
default: {}
- name: region
type: string

steps:
- script: |
set -eo pipefail

# Override the configuration for scaling
PYTHONPATH=$PYTHONPATH:$(pwd) python3 $PYTHON_SCRIPT_FILE override \
$NODE_COUNT $SCALE_UP_TIMEOUT $SCALE_DOWN_TIMEOUT ${CL2_CONFIG_DIR}/overrides.yaml

# Execute the scaling workload
PYTHONPATH=$PYTHONPATH:$(pwd) python3 $PYTHON_SCRIPT_FILE execute \
${CL2_IMAGE} ${CL2_CONFIG_DIR} $CL2_REPORT_DIR ${HOME}/.kube/config $CLOUD
workingDirectory: modules/python/clusterloader2
env:
CLOUD: ${{ parameters.cloud }}
PYTHON_SCRIPT_FILE: $(Pipeline.Workspace)/s/modules/python/clusterloader2/cri-autoscale/cri-autoscale.py
CL2_IMAGE: ${{ parameters.engine_input.image }}
CL2_CONFIG_DIR: $(Pipeline.Workspace)/s/modules/python/clusterloader2/cri-autoscale/config
CL2_REPORT_DIR: $(Pipeline.Workspace)/s/modules/python/clusterloader2/cri-autoscale/results
displayName: "Execute Konnectivity Autoscaler Scaling Test"
13 changes: 13 additions & 0 deletions steps/topology/cri-autoscale/collect-clusterloader2.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
parameters:
- name: cloud
type: string
default: ''
- name: regions
type: object
default: []

steps:
- template: /steps/engine/clusterloader2/cri-autoscale/collect.yml
parameters:
cloud: ${{ parameters.cloud }}
region: ${{ parameters.regions[0] }}
13 changes: 13 additions & 0 deletions steps/topology/cri-autoscale/execute-clusterloader2.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
parameters:
- name: cloud
type: string
default: ''
- name: regions
type: object
default: []

steps:
- template: /steps/engine/clusterloader2/cri-autoscale/execute.yml
parameters:
cloud: ${{ parameters.cloud }}
region: ${{ parameters.regions[0] }}
13 changes: 13 additions & 0 deletions steps/topology/cri-autoscale/validate-resources.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
parameters:
- name: cloud
type: string
- name: engine
type: string
- name: regions
type: object

steps:
- template: /steps/cloud/${{ parameters.cloud }}/update-kubeconfig.yml
parameters:
role: konnectivity
region: ${{ parameters.regions[0] }}
Loading