Schaalregels instellen in Azure Container Apps
Azure Container Apps beheert automatisch horizontaal schalen via een set declaratieve schaalregels. Naarmate de revisie van een container-app wordt uitgeschaald, worden nieuwe exemplaren van de revisie op aanvraag gemaakt. Deze exemplaren worden replica's genoemd.
Door schaalregels toe te voegen of te bewerken, wordt een nieuwe revisie van uw container-app gemaakt. Een revisie is een onveranderbare momentopname van uw container-app. Zie Revisiewijzigingstypen voor meer informatie over welke typen wijzigingen een nieuwe revisie activeren.
Gebeurtenisgestuurde Container Apps-taken maken gebruik van schaalregels om uitvoeringen te activeren op basis van gebeurtenissen.
Schaaldefinitie
Schalen is de combinatie van limieten, regels en gedrag.
Limieten definiëren het minimum- en maximumaantal replica's per revisie wanneer uw container-app wordt geschaald.
Schaallimiet Default value Minimumwaarde Maximumwaarde Minimum aantal replica's per revisie 0 0 Maximum aantal replica's dat kan worden geconfigureerd, zijn 1000. Maximum aantal replica's per revisie 10 1 Maximum aantal replica's dat kan worden geconfigureerd, zijn 1000. Regels zijn de criteria die door Container Apps worden gebruikt om te bepalen wanneer replica's moeten worden toegevoegd of verwijderd.
Schaalregels worden geïmplementeerd als HTTP, TCP (Transmission Control Protocol) of aangepast.
Gedrag is de combinatie van regels en limieten om schaalbeslissingen in de loop van de tijd te bepalen.
In schaalgedrag wordt uitgelegd hoe schaalbeslissingen worden genomen.
Wanneer u uw schaalregels definieert, is het belangrijk om rekening te houden met de volgende items:
- Er worden geen gebruikskosten in rekening gebracht als uw container-app wordt geschaald naar nul.
- Replica's die niet worden verwerkt, maar die in het geheugen blijven, worden mogelijk gefactureerd met een lager 'niet-actief' tarief. Zie Facturering voor meer informatie.
- Als u ervoor wilt zorgen dat een exemplaar van uw revisie altijd wordt uitgevoerd, stelt u het minimum aantal replica's in op 1 of hoger.
Regels schalen
Schalen wordt aangestuurd door drie verschillende categorieën triggers:
- HTTP: Op basis van het aantal gelijktijdige HTTP-aanvragen voor uw revisie.
- TCP: Op basis van het aantal gelijktijdige TCP-verbindingen met uw revisie.
- Aangepast: op basis van CPU, geheugen of ondersteunde gebeurtenisgestuurde gegevensbronnen, zoals:
- Azure Service Bus
- Azure Event Hubs
- Apache Kafka
- Redis
Als u meer dan één schaalregel definieert, begint de container-app te schalen zodra aan de eerste voorwaarde van regels wordt voldaan.
HTTP
Met een HTTP-schaalregel hebt u controle over de drempelwaarde van gelijktijdige HTTP-aanvragen die bepalen hoe de revisie van uw container-app wordt geschaald. Elke 15 seconden wordt het aantal gelijktijdige aanvragen berekend als het aantal aanvragen in de afgelopen 15 seconden gedeeld door 15. Container Apps-taken bieden geen ondersteuning voor HTTP-schaalregels.
In het volgende voorbeeld wordt de revisie uitgeschaald tot vijf replica's en kan worden ingeschaald naar nul. De schaaleigenschap is ingesteld op 100 gelijktijdige aanvragen per seconde.
Opmerking
In de http
sectie wordt een HTTP-schaalregel gedefinieerd.
Eigenschap schalen | Beschrijving | Default value | Minimumwaarde | Maximumwaarde |
---|---|---|---|---|
concurrentRequests |
Wanneer het aantal HTTP-aanvragen deze waarde overschrijdt, wordt er een andere replica toegevoegd. Replica's blijven tot aan de hoeveelheid toevoegen aan de maxReplicas pool. |
10 | 1 | N.v.t. |
{
...
"resources": {
...
"properties": {
...
"template": {
...
"scale": {
"minReplicas": 0,
"maxReplicas": 5,
"rules": [{
"name": "http-rule",
"http": {
"metadata": {
"concurrentRequests": "100"
}
}
}]
}
}
}
}
}
Notitie
Stel de properties.configuration.activeRevisionsMode
eigenschap van de container-app in op single
, wanneer u niet-HTTP-regels voor gebeurtenisschaal gebruikt.
Definieer een HTTP-schaalregel met behulp van de --scale-rule-http-concurrency
parameter in de create
of update
opdrachten.
CLI-parameter | Beschrijving | Default value | Minimumwaarde | Maximumwaarde |
---|---|---|---|---|
--scale-rule-http-concurrency |
Wanneer het aantal gelijktijdige HTTP-aanvragen deze waarde overschrijdt, wordt er een andere replica toegevoegd. Replica's blijven tot aan de hoeveelheid toevoegen aan de max-replicas pool. |
10 | 1 | N.v.t. |
az containerapp create \
--name <CONTAINER_APP_NAME> \
--resource-group <RESOURCE_GROUP> \
--environment <ENVIRONMENT_NAME> \
--image <CONTAINER_IMAGE_LOCATION>
--min-replicas 0 \
--max-replicas 5 \
--scale-rule-name azure-http-rule \
--scale-rule-type http \
--scale-rule-http-concurrency 100
Ga naar uw container-app in Azure Portal
Selecteer Schalen.
Selecteer Bewerken en implementeren.
Selecteer het tabblad Schaal .
Selecteer het minimum- en maximumreplicabereik.
Selecteer Toevoegen.
Voer in het vak Regelnaam een regelnaam in.
Selecteer HTTP-schaling in de vervolgkeuzelijst Type.
Voer in het vak Gelijktijdige aanvragen het gewenste aantal gelijktijdige aanvragen voor uw container-app in.
TCP
Met een TCP-schaalregel hebt u controle over de drempelwaarde van gelijktijdige TCP-verbindingen die bepalen hoe uw app wordt geschaald. Elke 15 seconden wordt het aantal gelijktijdige verbindingen berekend als het aantal verbindingen in de afgelopen 15 seconden gedeeld door 15. Container Apps-taken bieden geen ondersteuning voor TCP-schaalregels.
In het volgende voorbeeld wordt de revisie van de container-app uitgeschaald naar maximaal vijf replica's en kan inschalen naar nul. De drempelwaarde voor schalen wordt ingesteld op 100 gelijktijdige verbindingen per seconde.
Opmerking
In de tcp
sectie wordt een TCP-schaalregel gedefinieerd.
Eigenschap schalen | Beschrijving | Default value | Minimumwaarde | Maximumwaarde |
---|---|---|---|---|
concurrentConnections |
Wanneer het aantal gelijktijdige TCP-verbindingen deze waarde overschrijdt, wordt er een andere replica toegevoegd. Replica's worden nog steeds opgeteld tot de maxReplicas hoeveelheid naarmate het aantal gelijktijdige verbindingen toeneemt. |
10 | 1 | N.v.t. |
{
...
"resources": {
...
"properties": {
...
"template": {
...
"scale": {
"minReplicas": 0,
"maxReplicas": 5,
"rules": [{
"name": "tcp-rule",
"tcp": {
"metadata": {
"concurrentConnections": "100"
}
}
}]
}
}
}
}
}
Definieer een TCP-schaalregel met behulp van de --scale-rule-tcp-concurrency
parameter in de create
of update
opdrachten.
CLI-parameter | Beschrijving | Default value | Minimumwaarde | Maximumwaarde |
---|---|---|---|---|
--scale-rule-tcp-concurrency |
Wanneer het aantal gelijktijdige TCP-verbindingen deze waarde overschrijdt, wordt er een andere replica toegevoegd. Replica's worden nog steeds opgeteld tot de max-replicas hoeveelheid naarmate het aantal gelijktijdige verbindingen toeneemt. |
10 | 1 | N.v.t. |
az containerapp create \
--name <CONTAINER_APP_NAME> \
--resource-group <RESOURCE_GROUP> \
--environment <ENVIRONMENT_NAME> \
--image <CONTAINER_IMAGE_LOCATION>
--min-replicas 0 \
--max-replicas 5 \
--transport tcp \
--ingress <external/internal> \
--target-port <CONTAINER_TARGET_PORT> \
--scale-rule-name azure-tcp-rule \
--scale-rule-type tcp \
--scale-rule-tcp-concurrency 100
Niet ondersteund in Azure Portal. Gebruik de Azure CLI of Azure Resource Manager om een TCP-schaalregel te configureren.
Aanpassen
U kunt een aangepaste Container Apps-schaalregel maken op basis van elke KEDA-schaalder op basis van ScaledObject met de volgende standaardwaarden:
Defaults | Seconden |
---|---|
Peilinginterval | 30 |
Afkoelperiode | 300 |
Voor gebeurtenisgestuurde Container Apps-taken kunt u een aangepaste schaalregel maken op basis van op ScaledJob gebaseerde KEDA-schaalders.
In het volgende voorbeeld ziet u hoe u een aangepaste schaalregel maakt.
Opmerking
In dit voorbeeld ziet u hoe u een Azure Service Bus-scaler converteert naar een Container Apps-schaalregel, maar u gebruikt hetzelfde proces voor elke andere keda-schaalspecificatie op basis van ScaledObject.
Voor verificatie nemen KEDA scaler-verificatieparameters Container Apps-geheimen of beheerde identiteit.
In de volgende procedure ziet u hoe u een KEDA-schaalprogramma converteert naar een container-app-schaalregel. Dit fragment is een fragment van een ARM-sjabloon om aan te geven waar elke sectie in de context van de algemene sjabloon past.
{
...
"resources": {
...
"properties": {
...
"configuration": {
...
"secrets": [
{
"name": "<NAME>",
"value": "<VALUE>"
}
]
},
"template": {
...
"scale": {
"minReplicas": 0,
"maxReplicas": 5,
"rules": [
{
"name": "<RULE_NAME>",
"custom": {
"metadata": {
...
},
"auth": [
{
"secretRef": "<NAME>",
"triggerParameter": "<PARAMETER>"
}
]
}
}
]
}
}
}
}
}
Raadpleeg dit fragment voor context over hoe de onderstaande voorbeelden in de ARM-sjabloon passen.
Eerst definieert u het type en de metagegevens van de schaalregel.
Zoek
type
de waarde op basis van de KEDA-schaalspecificatie.triggers: - type: azure-servicebus metadata: queueName: my-queue namespace: service-bus-namespace messageCount: "5"
Voer in de ARM-sjabloon de schaalschaalwaarde
type
in decustom.type
eigenschap van de schaalregel in.... "rules": [ { "name": "azure-servicebus-queue-rule", "custom": { "type": "azure-servicebus", "metadata": { "queueName": "my-queue", "namespace": "service-bus-namespace", "messageCount": "5" } } } ] ...
Zoek
metadata
de waarden op basis van de KEDA-schaalspecificatie.triggers: - type: azure-servicebus metadata: queueName: my-queue namespace: service-bus-namespace messageCount: "5"
Voeg in de ARM-sjabloon alle metagegevenswaarden toe aan de
custom.metadata
sectie van de schaalregel.... "rules": [ { "name": "azure-servicebus-queue-rule", "custom": { "type": "azure-servicebus", "metadata": { "queueName": "my-queue", "namespace": "service-bus-namespace", "messageCount": "5" } } } ] ...
Verificatie
Container Apps-schaalregels ondersteunen verificatie op basis van geheimen. Schaalregels voor Azure-resources, waaronder Azure Queue Storage, Azure Service Bus en Azure Event Hubs, bieden ook ondersteuning voor beheerde identiteiten. Gebruik waar mogelijk verificatie van beheerde identiteiten om te voorkomen dat geheimen in de app worden opgeslagen.
Geheimen gebruiken
Als u geheimen wilt gebruiken voor verificatie, moet u een geheim maken in de matrix van secrets
de container-app. De geheime waarde wordt gebruikt in de auth
matrix van de schaalregel.
KEDA-schaalders kunnen geheimen gebruiken in een TriggerAuthentication waarnaar wordt verwezen door de authenticationRef
eigenschap. U kunt het TriggerAuthentication-object toewijzen aan de container-apps-schaalregel.
Zoek het
TriggerAuthentication
object waarnaar wordt verwezen door de KEDA-specificatieScaledObject
.Zoek in het
TriggerAuthentication
object elksecretTargetRef
en het bijbehorende geheim.apiVersion: v1 kind: Secret metadata: name: my-secrets namespace: my-project type: Opaque data: connection-string-secret: <SERVICE_BUS_CONNECTION_STRING> --- apiVersion: keda.sh/v1alpha1 kind: TriggerAuthentication metadata: name: azure-servicebus-auth spec: secretTargetRef: - parameter: connection name: my-secrets key: connection-string-secret --- apiVersion: keda.sh/v1alpha1 kind: ScaledObject metadata: name: azure-servicebus-queue-rule namespace: default spec: scaleTargetRef: name: my-scale-target triggers: - type: azure-servicebus metadata: queueName: my-queue namespace: service-bus-namespace messageCount: "5" authenticationRef: name: azure-servicebus-auth
In de ARM-sjabloon voor elk geheim:
Voeg een geheim toe aan de matrix van
secrets
de container-app die de geheime naam en waarde bevat.Voeg een vermelding toe aan de
auth
matrix van de schaalregel.Stel de waarde van de
triggerParameter
eigenschap in op de waarde van desecretTargetRef
parameter
eigenschap.Stel de waarde van de
secretRef
eigenschap in op de naam van desecretTargetRef
key
eigenschap.
{ ... "resources": { ... "properties": { ... "configuration": { ... "secrets": [ { "name": "connection-string-secret", "value": "<SERVICE_BUS_CONNECTION_STRING>" } ] }, "template": { ... "scale": { "minReplicas": 0, "maxReplicas": 5, "rules": [ { "name": "azure-servicebus-queue-rule", "custom": { "type": "azure-servicebus", "metadata": { "queueName": "my-queue", "namespace": "service-bus-namespace", "messageCount": "5" }, "auth": [ { "secretRef": "connection-string-secret", "triggerParameter": "connection" } ] } } ] } } } } }
Sommige schaalders ondersteunen metagegevens met het
FromEnv
achtervoegsel om te verwijzen naar een waarde in een omgevingsvariabele. Container Apps bekijkt de eerste container die wordt vermeld in de ARM-sjabloon voor de omgevingsvariabele.Raadpleeg de sectie overwegingen voor meer beveiligingsgerelateerde informatie.
Beheerde identiteit gebruiken
Container Apps-schaalregels kunnen beheerde identiteit gebruiken om te verifiëren met Azure-services. De volgende ARM-sjabloon geeft een door het systeem gebaseerde beheerde identiteit door om te verifiëren voor een Azure Queue Scaler.
"scale": {
"minReplicas": 0,
"maxReplicas": 4,
"rules": [
{
"name": "azure-queue",
"custom": {
"type": "azure-queue",
"metadata": {
"accountName": "apptest123",
"queueName": "queue1",
"queueLength": "1"
},
"identity": "system"
}
}
]
}
Zie Beheerde identiteit voor meer informatie over het gebruik van beheerde identiteiten met schaalregels.
Zoek
type
de waarde op basis van de KEDA-schaalspecificatie.triggers: - type: azure-servicebus metadata: queueName: my-queue namespace: service-bus-namespace messageCount: "5"
Stel in de CLI-opdracht de
--scale-rule-type
parameter in op de specificatiewaardetype
.az containerapp create \ --name <CONTAINER_APP_NAME> \ --resource-group <RESOURCE_GROUP> \ --environment <ENVIRONMENT_NAME> \ --image <CONTAINER_IMAGE_LOCATION> --min-replicas 0 \ --max-replicas 5 \ --secrets "connection-string-secret=<SERVICE_BUS_CONNECTION_STRING>" \ --scale-rule-name azure-servicebus-queue-rule \ --scale-rule-type azure-servicebus \ --scale-rule-metadata "queueName=my-queue" \ "namespace=service-bus-namespace" \ "messageCount=5" \ --scale-rule-auth "connection=connection-string-secret"
Zoek
metadata
de waarden op basis van de KEDA-schaalspecificatie.triggers: - type: azure-servicebus metadata: queueName: my-queue namespace: service-bus-namespace messageCount: "5"
Stel in de CLI-opdracht de
--scale-rule-metadata
parameter in op de metagegevenswaarden.U moet de waarden transformeren van een YAML-indeling naar een sleutel-waardepaar voor gebruik op de opdrachtregel. Scheid elke sleutel/waardepaar met een spatie.
az containerapp create \ --name <CONTAINER_APP_NAME> \ --resource-group <RESOURCE_GROUP> \ --environment <ENVIRONMENT_NAME> \ --image <CONTAINER_IMAGE_LOCATION> --min-replicas 0 \ --max-replicas 5 \ --secrets "connection-string-secret=<SERVICE_BUS_CONNECTION_STRING>" \ --scale-rule-name azure-servicebus-queue-rule \ --scale-rule-type azure-servicebus \ --scale-rule-metadata "queueName=my-queue" \ "namespace=service-bus-namespace" \ "messageCount=5" \ --scale-rule-auth "connection=connection-string-secret"
Verificatie
Container Apps-schaalregels ondersteunen verificatie op basis van geheimen. Schaalregels voor Azure-resources, waaronder Azure Queue Storage, Azure Service Bus en Azure Event Hubs, bieden ook ondersteuning voor beheerde identiteiten. Gebruik waar mogelijk verificatie van beheerde identiteiten om te voorkomen dat geheimen in de app worden opgeslagen.
Geheimen gebruiken
Als u verificatie op basis van geheimen voor een Container Apps-schaalregel wilt configureren, configureert u de geheimen in de container-app en verwijst u ernaar in de schaalregel.
Een KEDA-schaalfunctie ondersteunt geheimen in een TriggerAuthentication die door de authenticationRef
eigenschap wordt gebruikt voor referentie. U kunt het TriggerAuthentication
object toewijzen aan de container-apps-schaalregel.
Zoek het
TriggerAuthentication
object waarnaar wordt verwezen door de KEDA-specificatieScaledObject
. Identificeer elksecretTargetRef
van hetTriggerAuthentication
object.apiVersion: v1 kind: Secret metadata: name: my-secrets namespace: my-project type: Opaque data: connection-string-secret: <SERVICE_BUS_CONNECTION_STRING> --- apiVersion: keda.sh/v1alpha1 kind: TriggerAuthentication metadata: name: azure-servicebus-auth spec: secretTargetRef: - parameter: connection name: my-secrets key: connection-string-secret --- apiVersion: keda.sh/v1alpha1 kind: ScaledObject metadata: name: azure-servicebus-queue-rule namespace: default spec: scaleTargetRef: name: my-scale-target triggers: - type: azure-servicebus metadata: queueName: my-queue namespace: service-bus-namespace messageCount: "5" authenticationRef: name: azure-servicebus-auth
Maak in uw container-app de geheimen die overeenkomen met de
secretTargetRef
eigenschappen.Stel in de CLI-opdracht parameters in voor elke
secretTargetRef
vermelding.Maak een geheime vermelding met de
--secrets
parameter. Als er meerdere geheimen zijn, scheidt u deze met een spatie.Maak een verificatievermelding met de
--scale-rule-auth
parameter. Als er meerdere items zijn, scheidt u deze met een spatie.
az containerapp create \ --name <CONTAINER_APP_NAME> \ --resource-group <RESOURCE_GROUP> \ --environment <ENVIRONMENT_NAME> \ --image <CONTAINER_IMAGE_LOCATION> --min-replicas 0 \ --max-replicas 5 \ --secrets "connection-string-secret=<SERVICE_BUS_CONNECTION_STRING>" \ --scale-rule-name azure-servicebus-queue-rule \ --scale-rule-type azure-servicebus \ --scale-rule-metadata "queueName=my-queue" \ "namespace=service-bus-namespace" \ "messageCount=5" \ --scale-rule-auth "connection=connection-string-secret"
Beheerde identiteit gebruiken
Container Apps-schaalregels kunnen beheerde identiteit gebruiken om te verifiëren met Azure-services. Met de volgende opdracht maakt u een container-app met een door de gebruiker toegewezen beheerde identiteit en gebruikt deze om te verifiëren voor een Azure Queue Scaler.
az containerapp create \
--resource-group <RESOURCE_GROUP> \
--name <APP_NAME> \
--environment <ENVIRONMENT_ID> \
--user-assigned <USER_ASSIGNED_IDENTITY_ID> \
--scale-rule-name azure-queue \
--scale-rule-type azure-queue \
--scale-rule-metadata "accountName=<AZURE_STORAGE_ACCOUNT_NAME>" "queueName=queue1" "queueLength=1" \
--scale-rule-identity <USER_ASSIGNED_IDENTITY_ID>
Vervang tijdelijke aanduidingen door uw waarden.
Ga naar uw container-app in Azure Portal.
Selecteer Schalen.
Selecteer Bewerken en implementeren.
Selecteer het tabblad Schaal en replica's .
Selecteer het minimum- en maximumreplicabereik.
Selecteer Toevoegen.
Voer in het vak Regelnaam een regelnaam in.
Selecteer Aangepast in de vervolgkeuzelijst Type.
Zoek
type
de waarde op basis van de KEDA-schaalspecificatie.triggers: - type: azure-servicebus metadata: queueName: my-queue namespace: service-bus-namespace messageCount: "5"
Voer in het vak Aangepast regeltype de waarde van de schaalschaal in
type
.Zoek
metadata
de waarden op basis van de KEDA-schaalspecificatie.triggers: - type: azure-servicebus metadata: queueName: my-queue namespace: service-bus-namespace messageCount: "5"
Zoek in de portal de sectie Metagegevens en selecteer Toevoegen. Voer de naam en waarde in voor elk item in de sectie metagegevens van keda-specificatie
ScaledObject
.
Verificatie
Container Apps-schaalregels ondersteunen verificatie op basis van geheimen. Schaalregels voor Azure-resources, waaronder Azure Queue Storage, Azure Service Bus en Azure Event Hubs, bieden ook ondersteuning voor beheerde identiteiten. Gebruik waar mogelijk verificatie van beheerde identiteiten om te voorkomen dat geheimen in de app worden opgeslagen.
Geheimen gebruiken
Maak in uw container-app de geheimen waarnaar u wilt verwijzen.
Zoek het
TriggerAuthentication
object waarnaar wordt verwezen door de KEDA-specificatieScaledObject
. Identificeer elksecretTargetRef
van hetTriggerAuthentication
object.apiVersion: v1 kind: Secret metadata: name: my-secrets namespace: my-project type: Opaque data: connection-string-secret: <SERVICE_BUS_CONNECTION_STRING> --- apiVersion: keda.sh/v1alpha1 kind: TriggerAuthentication metadata: name: azure-servicebus-auth spec: secretTargetRef: - parameter: connection name: my-secrets key: connection-string-secret --- apiVersion: keda.sh/v1alpha1 kind: ScaledObject metadata: name: azure-servicebus-queue-rule namespace: default spec: scaleTargetRef: name: my-scale-target triggers: - type: azure-servicebus metadata: queueName: my-queue namespace: service-bus-namespace messageCount: "5" authenticationRef: name: azure-servicebus-auth
Selecteer Toevoegen in de sectie Verificatie om een vermelding te maken voor elke KEDA-parameter
secretTargetRef
.
Beheerde identiteit gebruiken
Verificatie van beheerde identiteit wordt niet ondersteund in Azure Portal. Gebruik de Azure CLI of Azure Resource Manager om te verifiëren met behulp van een beheerde identiteit.
Standaardschaalregel
Als u geen schaalregel maakt, wordt de standaardschaalregel toegepast op uw container-app.
Activator | Minimumaantal replica's | Maximum aantal replica's |
---|---|---|
HTTP | 0 | 10 |
Belangrijk
Zorg ervoor dat u een schaalregel maakt of instelt minReplicas
op 1 of meer als u inkomend verkeer niet inschakelt. Als inkomend verkeer is uitgeschakeld en u geen of een aangepaste schaalregel definieert minReplicas
, wordt de container-app geschaald naar nul en hoeft u geen back-up te maken.
Schaalgedrag
Het schaalgedrag heeft de volgende standaardwaarden:
Parameter | Weergegeven als |
---|---|
Peilinginterval | 30 seconden |
Afkoelperiode | 300 seconden |
Stabilisatievenster omhoog schalen | 0 seconden |
Stabilisatievenster omlaag schalen | 300 seconden |
Stap omhoog schalen | 1, 4, 100% van de huidige |
Stap omlaag schalen | 100% van de huidige |
Algoritme voor schalen | desiredReplicas = ceil(currentMetricValue / targetMetricValue) |
- Polling-interval is hoe vaak gebeurtenisbronnen worden opgevraagd door KEDA. Deze waarde is niet van toepassing op HTTP- en TCP-schaalregels.
- Afkoelperiode is hoe lang na de laatste gebeurtenis is waargenomen voordat de toepassing omlaag wordt geschaald tot het minimale aantal replica's.
- Het venster voor het opschalen van stabilisatie is hoe lang moet worden gewacht voordat een beslissing voor omhoog schalen wordt uitgevoerd zodra aan de voorwaarden voor omhoog schalen is voldaan.
- Het venster voor omlaag schalen is hoe lang moet worden gewacht voordat een beslissing voor omlaag schalen wordt uitgevoerd zodra aan de voorwaarden voor omlaag schalen is voldaan.
- Omhoog schalen is de snelheid waarmee nieuwe exemplaren worden toegevoegd. Het begint met 1, 4, 8, 16, 32, ... tot het geconfigureerde maximumaantal replica's.
- Omlaag schalen is de snelheid waarmee replica's worden verwijderd. Standaard worden 100% van de replica's die moeten worden afgesloten, verwijderd.
- Het algoritme voor schalen is de formule die wordt gebruikt om het huidige gewenste aantal replica's te berekenen.
Opmerking
Voor de volgende schaalregel:
"minReplicas": 0,
"maxReplicas": 20,
"rules": [
{
"name": "azure-servicebus-queue-rule",
"custom": {
"type": "azure-servicebus",
"metadata": {
"queueName": "my-queue",
"namespace": "service-bus-namespace",
"messageCount": "5"
}
}
}
]
Naarmate uw app uitschaalt, begint KEDA met een lege wachtrij en voert u de volgende stappen uit:
- Controleer
my-queue
elke 30 seconden. - Als de wachtrijlengte gelijk is aan 0, gaat u terug naar (1).
- Als de lengte van de wachtrij 0 is > , schaalt u de app naar 1.
- Als de lengte van de wachtrij 50 is, berekent u
desiredReplicas = ceil(50/5) = 10
. - App schalen naar
min(maxReplicaCount, desiredReplicas, max(4, 2*currentReplicaCount))
- Ga terug naar (1).
Als de app is geschaald naar het maximumaantal replica's van 20, doorloopt schalen dezelfde vorige stappen. Omlaag schalen gebeurt alleen als aan de voorwaarde is voldaan gedurende 300 seconden (venster voor omlaag schalen). Zodra de wachtrijlengte 0 is, wacht KEDA 300 seconden (afkoelperiode) voordat de app wordt geschaald naar 0.
Overwegingen
In de modus 'meerdere revisies' maakt het toevoegen van een nieuwe schaaltrigger een nieuwe revisie van uw toepassing, maar uw oude revisie blijft beschikbaar met de oude schaalregels. Gebruik de pagina Revisiebeheer om verkeerstoewijzingen te beheren.
Er worden geen gebruikskosten in rekening gebracht wanneer een toepassing wordt geschaald naar nul. Zie Facturering in Azure Container Apps voor meer prijsinformatie.
U moet gegevensbeveiliging inschakelen voor alle .NET-apps in Azure Container Apps. Zie Een ASP.NET Core-app implementeren en schalen in Azure Container Apps voor meer informatie.
Bekende beperkingen
Verticaal schalen wordt niet ondersteund.
Replicahoeveelheden zijn een doelbedrag, geen garantie.
Als u Dapr-actoren gebruikt om statussen te beheren, moet u er rekening mee houden dat schalen naar nul niet wordt ondersteund. Dapr maakt gebruik van virtuele actoren voor het beheren van asynchrone aanroepen, wat betekent dat hun in-memory weergave niet is gekoppeld aan hun identiteit of levensduur.