备用代理是使用 resourcePredictionsProfile
属性的 agentProfile
节配置的。 设置为 "kind": "Manual"
从头开始、工作日方案或所有周方案,并在节中 resourcePredictions
指定方案的详细信息。 设置为 "kind": "Automatic"
配置自动备用代理。 省略该 ResourcePredictionsProfile
部分以禁用备用代理。 有关如何配置每个缩放类型的详细信息,请参阅以下部分。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"name": "fabrikam-managed-pool",
"type": "microsoft.devopsinfrastructure/pools",
"apiVersion": "2024-10-19",
"location": "eastus",
"properties": {
...
"agentProfile": {
"kind": "Stateless",
"resourcePredictionsProfile": {
"kind": "Manual"
},
"resourcePredictions": {...}
}
}
}
]
}
创建或更新池时使用agent-profile
参数配置代理。
备用代理是使用 resourcePredictionsProfile
参数部分 agent-profile
配置的。 设置为 "kind": "Manual"
从头开始、工作日方案或所有周方案,并在节中 resourcePredictions
指定方案的详细信息。 设置为 "kind": "Automatic"
配置自动备用代理。 有关如何配置每个缩放类型的详细信息,请参阅以下部分。
az mdp pool create \
--agent-profile agent-profile.json
# other parameters omitted for space
以下示例显示了agent-profile.json文件的内容。
{
"Stateless":
{
"resourcePredictionsProfile": {
"kind": "Manual"
},
"resourcePredictions": {...}
}
}
手动模式最适合了解其 CI/CD 管道使用模式的团队。 如果选择手动选项,则需要根据你了解池中的代理最有可能使用以及可能使用的代理数,以及指定满足预计需求的代理的预配计数来定义预预配方案。
每隔几分钟,托管 DevOps 池就会检查运行作业的活动代理和等待作业的备用代理计数,以确保当前预配方案指定的代理的预配计数可用。 如果当前预配计数为 10,并且有五个代理在备用状态下运行作业和两个代理,则托管 DevOps 池将启动另外三个备用代理,使代理总数最多达到 10 个。
手动备用代理预配是在 resourcePredictionsProfile
部分中 agentProfile
指定的,并在节中 resourcePredictions
配置详细信息。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"name": "fabrikam-managed-pool",
"type": "microsoft.devopsinfrastructure/pools",
"apiVersion": "2024-10-19",
"location": "eastus",
"properties": {
...
"agentProfile": {
"kind": "Stateless",
"resourcePredictionsProfile": {
"kind": "Manual"
},
"resourcePredictions": {
"timeZone": "Eastern Standard Time",
"daysData": [
{},
{
"00:00:00": 1,
"04:00:00": 0
},
{},
{},
{},
{},
{}
]
}
}
}
}
]
}
使用 timeZone
属性为方案指定所需的时区。 默认为 UTC
。 若要检索此属性的时区名称列表,请参阅 TimeZoneInfo.GetSystemTimeZones 方法。
备用代理的计划由 daysData
列表定义。 该 daysData
列表可以有一项或七个项目。
包含 daysData
七个项目的列表映射到星期几,从星期日开始。 这七个项目中的每一项可以有零个或多个 "time": count
条目,以 24 小时格式指定时间,以及备用代理计数。 指定的备用代理计数将一直保留到下一 "time": count
个条目,该条目可以在同一天或第二天。
daysData
具有单个项的列表定义了一个“全周”方案,其中单个"time": count
条目对应于整个星期的备用代理计数。
以下示例是一种手动备用代理方案,使用 Eastern Standard Time
一个代理(星期一到星期五)预配的单个代理,从上午 9:00(备用代理计数 1
)到下午 5:00(备用代理计数 0
)。
{
"kind": "Stateless",
"resourcePredictions": {
"timeZone": "Eastern Standard Time",
"daysData": [
{},
{
"09:00:00": 1,
"17:00:00": 0
},
{
"09:00:00": 1,
"17:00:00": 0
},
{
"09:00:00": 1,
"17:00:00": 0
},
{
"09:00:00": 1,
"17:00:00": 0
},
{
"09:00:00": 1,
"17:00:00": 0
},
{}
]
},
"resourcePredictionsProfile": {
"kind": "Manual"
}
}
单个 daysData
项包含时间字典和备用代理计数。 每个 "time" : count
条目以 24 小时格式指定要从指定时间开始计划的备用代理数。 连续 "time" : count
条目指定当天的计划代理计数序列。
"daysData": [
{}, # Schedule of standby agent count adjustments for Sunday
{ # Schedule of standby agent count adjustments for Monday
"09:00:00": 1, # Adjust standby agent count to 1
"17:00:00": 0 # Adjust standby agent count to 0
},
{ # Schedule of standby agent count adjustments for Tuesday
"09:00:00": 1,
"17:00:00": 0
},
{ # Schedule of standby agent count adjustments for Wednesday
"09:00:00": 1,
"17:00:00": 0
},
{ # Schedule of standby agent count adjustments for Thursday
"09:00:00": 1,
"17:00:00": 0
},
{ # Schedule of standby agent count adjustments for Friday
"09:00:00": 1,
"17:00:00": 0
},
{} # Schedule of standby agent count adjustments for Saturday
]
备用代理计数不会在一天结束或一周结束时自动重置回零,并且指定空 daysData
项不会禁用当天的备用代理。 空 daysData
项表示当天的备用代理计数计划没有更改。 若要将备用代理设置为从特定时间段开始的零,必须显式提供一个"time" : count
条目和0
一个count
条目。
示例
若要不调整前一天(如果正在配置一周的第一个时间段),请指定一个 daysData
条目为零的项。若要对前一天结束时指定的备用代理计数进行任何调整(或每周)。
{
}
若要计划单个备用代理在 (使用属性指定的resourcePredictions
时区)开始09:00:00
和停止17:00:00
,请指定以下配置。
{
"09:00:00": 1,
"17:00:00": 0
}
若要从午夜 09:00:00
开始计划单个备用代理,然后是 10 个备用代理,直到 17:00:00
指定以下配置。
{
"00:00:00": 1,
"09:00:00": 10,
"17:00:00": 0
}
若要计划从指定日期开始 09:00:00
可用的备用代理,并在第二天停止 17:00:00
,请使用两个连续 daysData
项。
{
"09:00:00": `1`
},
{
"17:00:00": 0
}
创建或更新池时使用agent-profile
参数配置代理。
az mdp pool create \
--agent-profile agent-profile.json
# other parameters omitted for space
以下示例显示了agent-profile.json文件的内容。
手动备用代理预配是在 resourcePredictionsProfile
参数部分 agent-profile
指定的,并在节 resourcePredictions
中配置详细信息。
{
"Stateless": {
"resourcePredictionsProfile": {
"kind": "Manual"
},
"resourcePredictions": {
"timeZone": "Eastern Standard Time",
"daysData": [
{},
{
"00:00:00": 1,
"04:00:00": 0
},
{},
{},
{},
{},
{}
]
}
}
}
使用 timeZone
属性为方案指定所需的时区。 默认为 UTC
。 若要检索此属性的时区名称列表,请参阅 TimeZoneInfo.GetSystemTimeZones 方法。
备用代理的计划由 daysData
列表定义。 该 daysData
列表可以有一项或七个项目。
包含 daysData
七个项目的列表映射到星期几,从星期日开始。 这七个项目中的每一项可以有零个或多个 "time": count
条目,以 24 小时格式指定时间,以及备用代理计数。 指定的备用代理计数将一直保留到下一 "time": count
个条目,该条目可以在同一天或第二天。
daysData
具有单个项的列表定义了一个“全周”方案,其中单个"time": count
条目对应于整个星期的备用代理计数。
以下示例是一种手动备用代理方案,使用 Eastern Standard Time
一个代理(星期一到星期五)预配的单个代理,从上午 9:00(备用代理计数 1
)到下午 5:00(备用代理计数 0
)。
{
"Stateless": {
"resourcePredictions": {
"timeZone": "Eastern Standard Time",
"daysData": [
{},
{
"09:00:00": 1,
"17:00:00": 0
},
{
"09:00:00": 1,
"17:00:00": 0
},
{
"09:00:00": 1,
"17:00:00": 0
},
{
"09:00:00": 1,
"17:00:00": 0
},
{
"09:00:00": 1,
"17:00:00": 0
},
{}
]
},
"resourcePredictionsProfile": {
"kind": "Manual"
}
}
}
单个 daysData
项包含时间字典和备用代理计数。 每个 "time" : count
条目以 24 小时格式指定要从指定时间开始计划的备用代理数。 连续 "time" : count
条目指定当天的计划代理计数序列。
"daysData": [
{}, # Schedule of standby agent count adjustments for Sunday
{ # Schedule of standby agent count adjustments for Monday
"09:00:00": 1, # Adjust standby agent count to 1
"17:00:00": 0 # Adjust standby agent count to 0
},
{ # Schedule of standby agent count adjustments for Tuesday
"09:00:00": 1,
"17:00:00": 0
},
{ # Schedule of standby agent count adjustments for Wednesday
"09:00:00": 1,
"17:00:00": 0
},
{ # Schedule of standby agent count adjustments for Thursday
"09:00:00": 1,
"17:00:00": 0
},
{ # Schedule of standby agent count adjustments for Friday
"09:00:00": 1,
"17:00:00": 0
},
{} # Schedule of standby agent count adjustments for Saturday
]
备用代理计数不会在一天结束或一周结束时自动重置回零,并且指定空 daysData
项不会禁用当天的备用代理。 空 daysData
项表示当天的备用代理计数计划没有更改。 若要将备用代理设置为从特定时间段开始的零,必须显式提供一个"time" : count
条目和0
一个count
条目。
示例
若要不调整前一天(如果正在配置一周的第一个时间段),请指定一个 daysData
条目为零的项。若要对前一天结束时指定的备用代理计数进行任何调整(或每周)。
{
}
若要计划单个备用代理在 (使用属性指定的resourcePredictions
时区)开始09:00:00
和停止17:00:00
,请指定以下配置。
{
"09:00:00": 1,
"17:00:00": 0
}
若要从午夜 09:00:00
开始计划单个备用代理,然后是 10 个备用代理,直到 17:00:00
指定以下配置。
{
"00:00:00": 1,
"09:00:00": 10,
"17:00:00": 0
}
若要计划从指定日期开始 09:00:00
可用的备用代理,并在第二天停止 17:00:00
,请使用两个连续 daysData
项。
{
"09:00:00": `1`
},
{
"17:00:00": 0
}
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"name": "fabrikam-managed-pool",
"type": "microsoft.devopsinfrastructure/pools",
"apiVersion": "2024-10-19",
"location": "eastus",
"properties": {
...
"agentProfile": {
"kind": "Stateless",
"resourcePredictionsProfile": {
"kind": "Manual"
},
"resourcePredictions": {
"timeZone": "Eastern Standard Time",
"daysData": [
{},
{
"00:00:00": 1,
"04:00:00": 0
},
{},
{},
{},
{},
{}
]
}
}
}
}
]
}
{
"Stateless": {
"resourcePredictionsProfile": {
"kind": "Manual"
},
"resourcePredictions": {
"timeZone": "Eastern Standard Time",
"daysData": [
{},
{
"00:00:00": 1,
"04:00:00": 0
},
{},
{},
{},
{},
{}
]
}
}
}
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"name": "fabrikam-managed-pool",
"type": "microsoft.devopsinfrastructure/pools",
"apiVersion": "2024-10-19",
"location": "eastus",
"properties": {
...
"agentProfile": {
"kind": "Stateless",
"resourcePredictionsProfile": {
"kind": "Manual"
},
"resourcePredictions": {
"timeZone": "Eastern Standard Time",
"daysData": [
{},
{
"09:00:00": 4,
"17:00:00": 0
},
{
"09:00:00": 4,
"17:00:00": 0
},
{
"09:00:00": 4,
"17:00:00": 0
},
{
"09:00:00": 4,
"17:00:00": 0
},
{
"09:00:00": 4,
"17:00:00": 0
},
{}
]
}
}
}
}
]
}
{
"Stateless": {
"resourcePredictionsProfile": {
"kind": "Manual"
},
"resourcePredictions": {
"timeZone": "Eastern Standard Time",
"daysData": [
{},
{
"09:00:00": 4,
"17:00:00": 0
},
{
"09:00:00": 4,
"17:00:00": 0
},
{
"09:00:00": 4,
"17:00:00": 0
},
{
"09:00:00": 4,
"17:00:00": 0
},
{
"09:00:00": 4,
"17:00:00": 0
},
{}
]
}
}
}