Hoppa till innehållet
Stackship-dokumentation English

App ServiceAnvändareMaskinöversatt

Skalning

Kör en app på ett fast antal instanser, skala den efter CPU-användning eller skala den på händelser med KEDA, ner till noll.

Kräver: apps/write

Öppna appen och sedan Konfiguration → Skalning, välj Skalningstyp och spara. Skalning lägger till eller tar bort instanser; den bygger inte om appen och byter inte ut instanserna som körs.

Ett fast antal instanser

Ingen (manuell) kör antalet instanser i Replikor, 1 till 20.

Skala efter CPU-användning

Mätbaserad utskalning (horisontellt) använder en horisontell poddautoskalare i Kubernetes:

  • Min replikor — minst 1.
  • Max replikor — högst 20, och inte under minimum.
  • CPU-tröskel för utskalning — 1 till 100 %. Instanser läggs till när deras genomsnittliga CPU-användning, mätt mot CPU:n i appens beräkningsplan, ligger över tröskeln, och tas bort när den sjunker.

Skala på händelser

Händelsestyrd autoskalning (horisontellt) använder KEDA:

  • Min replikor — 0 eller fler. Med 0 skalar appen till noll när ingen utlösare är aktiv, och har då ingen instans som svarar på anrop förrän en utlösare startar en. Medan den står på noll är dess status Stopped.
  • Max replikor — 1 till 20, och inte under minimum.
  • Utlösare — minst en. KEDA skalar när någon av dem aktiveras. Välj Utlösartyp och fyll i dess Metadata, nyckel-värde-inställningarna för den KEDA-skalaren.

Listan erbjuder RabbitMQ, Kafka, Azure Service Bus, Prometheus, Cron (time-based), Redis och PostgreSQL; Anpassad… tar vilken annan typ som helst som plattformen godtar — se KEDA-utlösare. För de erbjudna typerna kräver plattformen de här metadatanycklarna:

Typ Obligatorisk metadata
cron timezone, start, end, desiredReplicas
rabbitmq queueName, och host eller hostFromEnv
kafka bootstrapServers eller bootstrapServersFromEnv, och consumerGroup eller consumerGroupFromEnv
azure-servicebus queueName eller topicName (med subscriptionName), och connectionFromEnv
prometheus serverAddress, query, threshold
redis listName, och en av address, addresses, addressFromEnv, host, hosts, hostFromEnv
postgresql query, targetQueryValue, och connectionFromEnv eller host

Alla andra typer behöver minst ett metadatavärde. En utlösare har inga egna autentiseringsuppgifter: ange anslutningsuppgifter i metadatan, direkt eller — med en nyckel som slutar på FromEnv — som namnet på en av appens miljövariabler.

Se upp

En utlösares metadata sparas, liksom appens miljövariabler, i klartext, och alla med apps/read på appen kan läsa den. Appens hemligheter är inte miljövariabler, så en utlösare kan inte använda en. När en skalare behöver inloggningsuppgifter, ge den egna med inte mer åtkomst än skalningen kräver — till exempel läsbehörighet till kön — i stället för de uppgifter appen använder.

Via API:t kan även scaling.keda.pollingInterval (sekunder mellan kontrollerna, minst 1) och scaling.keda.cooldownPeriod (sekunder efter den senaste aktiva utlösaren innan appen skalas ner igen, 0 eller fler) anges; utan dem gäller KEDA:s standardvärden.

När autoskalningen inte fungerar

Plattformen godtar en konfiguration för autoskalning även när klustret inte kan agera på den, till exempel när det saknar en metrics-tjänst eller KEDA. Appen stannar då på sitt nuvarande antal instanser, och Översikt visar Autoskalning som Fungerar inte med orsaken under Skalningsproblem.

Bra att veta

  • En app som ställdes in på över 20 instanser innan den gränsen fanns behåller sitt antal, men kan inte gå högre.
  • När en app stoppas kommer den ihåg sin skalning, och när den startas återställs den — se Starta, stoppa och starta om. En skalningsändring som sparas medan appen är stoppad får effekt när den startar.
  • En slot kör en instans; slots har inga skalningsinställningar.