Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Usługa Azure Container Apps zarządza automatycznym skalowaniem w poziomie za pomocą zestawu reguł skalowania deklaratywnego. W miarę skalowania aplikacji kontenera nowe wystąpienia aplikacji kontenera są tworzone na żądanie. Te instancje są nazywane replikami.
W tym samouczku dodasz regułę skalowania HTTP do aplikacji kontenera i zobaczysz, jak aplikacja jest skalowana.
Wymagania wstępne
| Wymaganie | Instrukcje |
|---|---|
| Konto platformy Azure | Jeśli nie masz konta platformy Azure, możesz utworzyć je bezpłatnie. Aby kontynuować, musisz mieć uprawnienie Współautor w subskrypcji platformy Azure. Aby uzyskać szczegółowe informacje, zobacz Przypisywanie ról platformy Azure przy użyciu witryny Azure Portal . |
| Konto GitHub | Zdobądź jeden bezpłatnie. |
| Azure CLI | Zainstaluj Azure CLI. |
Konfiguracja
Aby zalogować się do platformy Azure z poziomu interfejsu wiersza polecenia, uruchom następujące polecenie i postępuj zgodnie z monitami, aby ukończyć proces uwierzytelniania.
az login
Aby upewnić się, że używasz najnowszej wersji CLI, uruchom polecenie uaktualniania.
az upgrade
Następnie zainstaluj lub zaktualizuj rozszerzenie usługi Azure Container Apps dla interfejsu wiersza polecenia.
Jeśli podczas uruchamiania az containerapp poleceń w interfejsie wiersza polecenia platformy Azure lub poleceniach cmdlet z modułu Az.App w programie PowerShell wystąpią błędy dotyczące brakujących parametrów, upewnij się, że masz zainstalowaną najnowszą wersję rozszerzenia Azure Container Apps.
az extension add --name containerapp --upgrade
Uwaga
Począwszy od maja 2024 r., rozszerzenia interfejsu wiersza polecenia platformy Azure domyślnie nie włączają funkcji w wersji zapoznawczej. Aby uzyskać dostęp do funkcji usługi Container Apps w wersji zapoznawczej, zainstaluj rozszerzenie Container Apps za pomocą polecenia --allow-preview true.
az extension add --name containerapp --upgrade --allow-preview true
Teraz, po zainstalowaniu bieżącego rozszerzenia lub modułu, zarejestruj przestrzenie nazw Microsoft.App i Microsoft.OperationalInsights.
az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights
Utwórz i wdróż aplikację kontenera
Utwórz i wdróż aplikację kontenera za pomocą polecenia containerapp up. Ta komenda tworzy:
- Grupa zasobów
- Środowisko usługi Container Apps
- obszar roboczy usługi Log Analytics
Jeśli którykolwiek z tych zasobów już istnieje, polecenie używa istniejących zasobów zamiast tworzyć nowe.
Na koniec polecenie tworzy i wdraża aplikację kontenera przy użyciu publicznego obrazu kontenera . mcr.microsoft.com/dotnet/samples:aspnetapp Ten obraz służy do wyzwalania reguł skalowania utworzonych w tym artykule. Nie musisz wiedzieć ani używać platformy .NET do wykonania tej procedury.
az containerapp up \
--name my-container-app \
--resource-group my-container-apps \
--location centralus \
--environment 'my-container-apps' \
--image mcr.microsoft.com/dotnet/samples:aspnetapp \
--target-port 8080 \
--ingress external \
--query properties.configuration.ingress.fqdn \
Uwaga
Upewnij się, że wartość parametru --image jest zapisana małymi literami.
Ustawiając --ingress na external, aplikacja kontenera jest dostępna dla żądań publicznych.
Polecenie up zwraca w pełni kwalifikowaną nazwę domeny (FQDN) dla aplikacji kontenera. Skopiuj tę nazwę FQDN do pliku tekstowego. Jest on używany w sekcji Wysyłanie żądań . Nazwa FQDN wygląda jak w poniższym przykładzie:
https://my-container-app.icydune-96848328.centralus.azurecontainerapps.io
Dodaj regułę skalowania
Dodaj regułę skalowania HTTP do aplikacji kontenera, uruchamiając polecenie az containerapp update.
az containerapp update \
--name my-container-app \
--resource-group my-container-apps \
--min-replicas 1 \
--max-replicas 10 \
--scale-rule-name my-http-scale-rule \
--scale-rule-http-concurrency 1
To polecenie dodaje regułę skalowania HTTP do aplikacji kontenera o nazwie my-http-scale-rule i ustawieniu współbieżności 1. Jeśli aplikacja odbiera więcej niż jedno współbieżne żądanie HTTP, środowisko uruchomieniowe tworzy repliki aplikacji do obsługi żądań.
Polecenie update zwraca nową konfigurację jako odpowiedź JSON, co pozwala potwierdzić, że żądanie zakończyło się pomyślnie.
Rozpocznij rejestrowanie
Możesz obserwować efekty skalowania aplikacji, wyświetlając dzienniki wygenerowane przez środowisko uruchomieniowe usługi Container Apps. Użyj polecenia , az containerapp logs show aby rozpocząć nasłuchiwanie wpisów dziennika.
az containerapp logs show \
--name my-container-app \
--resource-group my-container-apps \
--type=system \
--follow=true
Polecenie show zwraca wpisy z dzienników systemowych dla Twojej aplikacji kontenerowej w czasie rzeczywistym. Możesz oczekiwać odpowiedzi podobnej do następującego przykładu:
{
"TimeStamp":"2023-08-01T16:49:03.02752",
"Log":"Connecting to the container 'my-container-app'..."
}
{
"TimeStamp":"2023-08-01T16:49:03.04437",
"Log":"Successfully Connected to container:
'my-container-app' [Revision: 'my-container-app--9uj51l6',
Replica: 'my-container-app--9uj51l6-5f96557ffb-5khg9']"
}
{
"TimeStamp":"2023-08-01T16:47:31.9480811+00:00",
"Log":"Microsoft.Hosting.Lifetime[14]"
}
{
"TimeStamp":"2023-08-01T16:47:31.9481264+00:00",
"Log":"Now listening on: http://[::]:80"
}
{
"TimeStamp":"2023-08-01T16:47:31.9490917+00:00",
"Log":"Microsoft.Hosting.Lifetime[0]"
}
{
"TimeStamp":"2023-08-01T16:47:31.9491036+00:00",
"Log":"Application started. Press Ctrl+C to shut down."
}
{
"TimeStamp":"2023-08-01T16:47:31.949723+00:00",
"Log":"Microsoft.Hosting.Lifetime[0]"
}
{
"TimeStamp":"2023-08-01T16:47:31.9497292+00:00",
"Log":"Hosting environment: Production"
}
{
"TimeStamp":"2023-08-01T16:47:31.9497325+00:00",
"Log":"Microsoft.Hosting.Lifetime[0]"
}
{
"TimeStamp":"2023-08-01T16:47:31.9497367+00:00",
"Log":"Content root path: /app/"
}
Aby uzyskać więcej informacji, zobacz az containerapp logs.
Wyślij żądania
Otwórz nową powłokę bash. Uruchom następujące polecenie, zastępując <YOUR_CONTAINER_APP_FQDN> w pełni kwalifikowaną nazwą domeny aplikacji kontenera, zapisaną w sekcji Tworzenie i wdrażanie aplikacji kontenera.
seq 1 50 | xargs -Iname -P10 curl "<YOUR_CONTAINER_APP_FQDN>"
Te polecenia wysyłają 50 żądań do aplikacji kontenerowej w równoczesnych partiach po 10 żądań każda.
| Polecenie lub argument | Opis |
|---|---|
seq 1 50 |
Generuje sekwencję liczb z zakresu od 1 do 50. |
| |
Operator potoku wysyła sekwencję do polecenia xargs. |
xargs |
Uruchamia curl z określonym adresem URL |
-Iname |
Działa jako miejsce na dane wyjściowe z seq. Ten argument uniemożliwia wysyłanie wartości zwracanej do polecenia curl. |
curl |
Wywołuje podany adres URL. |
-P10 |
Poleca xargs uruchamianie maksymalnie 10 procesów naraz. |
Aby uzyskać więcej informacji, zobacz dokumentację dotyczącą:
W pierwszej powłoce, w której uruchomiono az containerapp logs show polecenie, dane wyjściowe zawierają teraz co najmniej jeden wpis dziennika, jak pokazano poniżej.
{
"TimeStamp":"2023-08-01 18:09:52 +0000 UTC",
"Type":"Normal",
"ContainerAppName":"my-container-app",
"RevisionName":"my-container-app--00001111",
"ReplicaName":"my-container-app--00001111-aaaaa22222-bbbb",
"Msg":"Replica 'my-container-app--00001111-aaaaa22222-bbbb' has been scheduled to run on a node.",
"Reason":"AssigningReplica",
"EventSource":"ContainerAppController",
"Count":0
}
Skalowanie widoku w Azure portal (opcjonalnie)
Zaloguj się do portalu Azure portal.
Na pasku wyszukiwania u góry wprowadź ciąg my-container-app.
W wynikach wyszukiwania w obszarze Zasoby wybierz pozycję my-container-app.
Na pasku nawigacyjnym po lewej stronie rozwiń węzeł Aplikacja i wybierz pozycję Skalowanie i repliki.
Na stronie Scale and Replicas wybierz pozycję Repliki.
Aplikacja kontenera ma teraz uruchomioną więcej niż jedną replikę.
Może być konieczne wybranie Odśwież, aby zobaczyć nowe repliki.
Na pasku nawigacyjnym po lewej stronie rozwiń Monitorowanie i wybierz pozycję Metryki.
Na stronie Metryki ustaw wartość Metryka na Żądania.
Wybierz pozycję Zastosuj podział.
Rozwiń listę rozwijaną Wartości i zaznacz pozycję Replika.
Wybierz niebieską ikonę znacznika wyboru, aby zakończyć edytowanie podziału.
Wykres przedstawia żądania odebrane przez aplikację kontenera w podziale na repliki.
Domyślnie skala wykresu jest ustawiona na ostatnie 24 godziny, a stopień szczegółowości czasu wynosi 15 minut. Wybierz skalę i zmień ją na ostatnie 30 minut, a szczegółowość czasu ustaw na jedną minutę. Naciśnij przycisk Zastosuj.
Wybierz na wykresie i przeciągnij, aby wyróżnić ostatni wzrost liczby żądań odebranych przez aplikację kontenera.
Poniższy zrzut ekranu przedstawia powiększony widok sposobu dzielenia żądań odebranych przez aplikację kontenera między repliki.
Skalowanie CPU i pamięci
W miarę możliwości należy preferować reguły skalowania HTTP zamiast reguł skalowania procesora CPU lub pamięci. Skalowanie procesora i pamięci nie pozwala aplikacji kontenerowej skalować się do zera.
Po dodaniu reguły skalowania procesora CPU lub pamięci można ją przetestować, wysyłając żądania do aplikacji kontenera i wyświetlając skalowanie w witrynie Azure Portal.
Po wysłaniu żądań do aplikacji skalowania może upłynąć minutę, zanim reguła skalowania zostanie wyzwolona i zostaną utworzone nowe repliki.
Skalowanie CPU
Skalowanie CPU umożliwia aplikacji skalowanie w zależności od stopnia wykorzystania procesora.
Na przykład, jeśli tworzysz regułę skalowania procesora z wartością użycia 50, usługa Azure Container Apps tworzy więcej replik aplikacji kontenera, gdy średnie użycie procesora dla wszystkich replik osiągnie 50%.
Dla aplikacji z wieloma kontenerami wykorzystanie CPU to średnia ważona alokacją, obliczana jako całkowite wykorzystanie CPU wszystkich kontenerów w replice podzielone przez całkowitą alokację CPU, wyrażone w procentach. Na przykład, jeśli jeden kontener wykorzystuje całą alokację 0,25 vCPU, a inny nie używa żadnej alokacji 0,75 vCPU, wykorzystanie CPU repliki wynosi 25%, a nie 50% czy 100%.
Skalowanie procesora CPU nie zezwala aplikacji kontenera na skalowanie do zera. Aby uzyskać więcej informacji na temat tego wyzwalacza, zobacz Wyzwalacz skalowania procesora CPU KEDA.
Dodaj regułę skalowania procesora CPU do aplikacji kontenera az containerapp update , uruchamiając polecenie .
Uwaga
Gdy używasz interfejsu wiersza polecenia platformy Azure do dodawania reguły skalowania do aplikacji kontenera, która ma już regułę skalowania, nowa reguła skalowania zastępuje starą regułę skalowania. Aby zobaczyć, jak dodać wiele reguł skalowania, zobacz Wiele reguł skalowania.
Przed uruchomieniem następującego polecenia zastąp element <PLACEHOLDERS> swoimi wartościami. Na potrzeby tego samouczka zastąp <UTILIZATION> z 1. Powoduje to skalowanie aplikacji kontenera, gdy średnie wykorzystanie CPU dla wszystkich replik osiągnie 1%. Ta wartość jest tylko dla pokazu. Liczba replik jest ograniczona do 10 przez --max-replicas 10, który został ustalony podczas uruchamiania az containerapp update.
az containerapp update \
--name my-container-app \
--resource-group my-container-apps \
--min-replicas 1 \
--max-replicas 10 \
--scale-rule-name my-cpu-scale-rule \
--scale-rule-type cpu \
--scale-rule-metadata type=Utilization value=<UTILIZATION>
Skalowanie pamięci
Skalowanie pamięci umożliwia aplikacji zwiększanie lub zmniejszanie zasobów w zależności od ilości używanej pamięci.
Jeśli na przykład utworzysz regułę skalowania pamięci z wartością 50użycia , usługa Azure Container Apps utworzy więcej replik aplikacji kontenera, gdy średnie użycie pamięci dla wszystkich replik osiągnie 50%.
Skalowanie pamięci nie zezwala aplikacji kontenera na skalowanie do zera. Aby uzyskać więcej informacji na temat tego wyzwalacza, zobacz Wyzwalacz skalowania pamięci KEDA.
Dodaj regułę skalowania pamięci do aplikacji kontenera, uruchamiając polecenie az containerapp update.
Uwaga
Gdy używasz interfejsu wiersza polecenia platformy Azure do dodawania reguły skalowania do aplikacji kontenera, która ma już regułę skalowania, nowa reguła skalowania zastępuje starą regułę skalowania. Aby zobaczyć, jak dodać wiele reguł skalowania, zobacz Wiele reguł skalowania.
Przed uruchomieniem następującego polecenia zastąp element <PLACEHOLDERS> swoimi wartościami. Na potrzeby tego samouczka zastąp <UTILIZATION> z 1. Powoduje to skalowanie aplikacji kontenera, gdy średnie wykorzystanie pamięci dla wszystkich replik osiągnie 1%. Ta wartość jest tylko dla pokazu. Liczba replik jest ograniczona do 10 przez --max-replicas 10, który został ustalony podczas uruchamiania az containerapp update.
az containerapp update \
--name my-container-app \
--resource-group my-container-apps \
--min-replicas 1 \
--max-replicas 10 \
--scale-rule-name my-memory-scale-rule \
--scale-rule-type memory \
--scale-rule-metadata type=Utilization value=<UTILIZATION>
Wiele reguł skalowania
Aby dodać wiele reguł skalowania do aplikacji kontenera przy użyciu interfejsu wiersza polecenia platformy Azure, musisz użyć języka YAML.
Wyeksporuj konfigurację aplikacji kontenera do pliku YAML za pomocą polecenia
az containerapp show.az containerapp show \ --name my-container-app \ --resource-group my-container-apps \ --output yaml > app.yamlW sekcji
properties>template>scale>rulesapp.yaml, dodaj następujące właściwości. Zastąp element<PLACEHOLDERS>swoimi wartościami.... properties: ... template: ... scale: ... rules: - name: cpu-scaling-rule custom: type: cpu metadata: type: "Utilization" value: "<CPU_UTILIZATION>" - name: memory-scaling-rule custom: type: memory metadata: type: "Utilization" value: "<MEMORY_UTILIZATION>" ...Zaimportuj konfigurację aplikacji kontenera z
app.yamlza pomocą poleceniaaz containerapp update.az containerapp update \ --name my-container-app \ --resource-group my-container-apps \ --yaml app.yaml
Wyczyść zasoby
Jeśli nie zamierzasz nadal korzystać z tej aplikacji, uruchom następujące polecenie, aby usunąć grupę zasobów wraz ze wszystkimi zasobami utworzonymi w tym samouczku.
Uwaga
Następujące polecenie usuwa określoną grupę zasobów i wszystkie zawarte w niej zasoby. Jeśli zasoby spoza zakresu tego samouczka istnieją w określonej grupie zasobów, zostaną również usunięte.
az group delete --name my-container-apps
Napiwek
Masz problemy? Poinformuj nas na GitHubie, otwierając problem w repozytorium Azure Container Apps.