Rozwiązywanie problemów z aplikacją kontenera
Przeglądanie dzienników i ustawień konfiguracji usługi Azure Container Apps może ujawnić podstawowe problemy, jeśli aplikacja kontenera nie działa prawidłowo. Skorzystaj z poniższego przewodnika, aby ułatwić znajdowanie i wyświetlanie szczegółowych informacji o aplikacji kontenera.
Scenariusze
W poniższej tabeli wymieniono problemy, które mogą wystąpić podczas korzystania z usługi Azure Container Apps, oraz czynności, które można wykonać, aby je rozwiązać.
Scenariusz | opis | Akcje |
---|---|---|
Wszystkie scenariusze | Wyświetlanie dzienników Korzystanie z diagnozowania i rozwiązywania problemów |
|
Błąd podczas wdrażania nowej poprawki | Podczas próby wdrożenia nowej poprawki zostanie wyświetlony komunikat o błędzie. | Sprawdzanie, czy usługa Container Apps może ściągnąć obraz kontenera |
Aprowizowanie trwa zbyt długo | Po wdrożeniu nowej poprawki nowa wersja ma stan Aprowizacja i Stan uruchomionego przetwarzania na czas nieokreślony. | Sprawdź, czy sondy kondycji są poprawnie skonfigurowane |
Poprawka jest obniżona | Aprowizacja nowej poprawki trwa ponad 10 minut. Na koniec ma stan Aprowizowania, ale stan Uruchomiono obniżoną sprawność. Etykietka narzędzia Stan uruchamiania odczytujeDetails: Deployment Progress Deadline Exceeded. 0/1 replicas ready. |
Sprawdź, czy sondy kondycji są poprawnie skonfigurowane |
Żądania do punktów końcowych kończą się niepowodzeniem | Punkt końcowy aplikacji kontenera nie odpowiada na żądania. | Przeglądanie konfiguracji ruchu przychodzącego |
Żądania zwracają stan 403 | Punkt końcowy aplikacji kontenera odpowiada na żądania z powodu błędu HTTP 403 (odmowa dostępu). | Sprawdź, czy konfiguracja sieci jest poprawna |
Odpowiedzi nie są zgodnie z oczekiwaniami | Punkt końcowy aplikacji kontenera odpowiada na żądania, ale odpowiedzi nie są zgodnie z oczekiwaniami. | Sprawdź, czy ruch jest kierowany do poprawnej poprawki Sprawdź, czy używasz unikatowych tagów podczas wdrażania obrazów w rejestrze kontenerów |
Błąd brakujących parametrów | Komunikaty o błędach dotyczące brakujących parametrów są wyświetlane podczas uruchamiania az containerapp poleceń w interfejsie wiersza polecenia platformy Azure lub uruchamiania poleceń cmdlet z modułu Az.App w programie Azure PowerShell. |
Sprawdź, czy zainstalowano najnowszą wersję rozszerzenia usługi Azure Container Apps |
Funkcje w wersji zapoznawczej są niedostępne | Funkcje w wersji zapoznawczej nie są dostępne podczas uruchamiania az containerapp poleceń w interfejsie wiersza polecenia platformy Azure. |
Sprawdzanie, czy rozszerzenie usługi Azure Container Apps zezwala na funkcje w wersji zapoznawczej |
Usuwanie aplikacji lub środowiska nie działa | Ten problem często towarzyszy komunikat, taki jak provisioningState: ScheduledForDelete. | Ręczne usuwanie skojarzonej sieci wirtualnej |
Wyświetlanie dzienników
Jednym z pierwszych kroków, które należy wykonać, gdy szukasz problemów z aplikacją kontenera, jest wyświetlenie komunikatów dziennika. Możesz wyświetlić dane wyjściowe dzienników konsoli i systemu. Dziennik konsoli aplikacji kontenera przechwytuje strumienie i stderr
aplikacjestdout
. Usługa Container Apps generuje dzienniki systemowe dla zdarzeń poziomu usług.
- Zaloguj się w witrynie Azure Portal.
- Na pasku wyszukiwania wprowadź nazwę aplikacji kontenera.
- W sekcji Zasoby wybierz nazwę aplikacji kontenera.
- Na pasku nawigacyjnym rozwiń węzeł Monitorowanie i wybierz pozycję Strumień dziennika (a nie dzienniki).
- Jeśli na stronie Strumień dziennika jest wyświetlany komunikat Ta poprawka jest skalowana do zera. Wybierz przycisk Przejdź do zarządzania poprawkami . Wdróż nową poprawkę skalowaną do minimalnej liczby replik 1. Aby uzyskać więcej informacji, zobacz Skalowanie w usłudze Azure Container Apps.
- Na stronie Strumień dzienników ustaw pozycję Dzienniki na konsolę lub system.
Korzystanie z narzędzia do diagnozowania i rozwiązywania problemów
Za pomocą narzędzia do diagnozowania i rozwiązywania problemów możesz znaleźć problemy z kondycją, konfiguracją i wydajnością aplikacji kontenera.
- Zaloguj się w witrynie Azure Portal.
- Na pasku wyszukiwania wprowadź nazwę aplikacji kontenera.
- W sekcji Zasoby wybierz nazwę aplikacji kontenera.
- Na pasku nawigacyjnym wybierz pozycję Diagnozuj i rozwiąż problemy.
- Na stronie Diagnozowanie i rozwiązywanie problemów wybierz jedną z kategorii Rozwiązywanie problemów.
- Wybierz jedną z kategorii na pasku nawigacyjnym, aby znaleźć sposoby rozwiązywania problemów z aplikacją kontenera.
Weryfikowanie ułatwień dostępu obrazu kontenera
Jeśli podczas próby wdrożenia nowej poprawki zostanie wyświetlony komunikat o błędzie, sprawdź, czy usługa Container Apps może ściągnąć obraz kontenera.
- Upewnij się, że zapora środowiska kontenera nie blokuje dostępu do rejestru kontenerów. Aby uzyskać więcej informacji, zobacz Kontrolowanie ruchu wychodzącego za pomocą tras zdefiniowanych przez użytkownika.
- Jeśli istniejąca sieć wirtualna używa niestandardowego serwera DNS zamiast domyślnego serwera DNS dostarczonego przez platformę Azure, sprawdź, czy serwer DNS jest poprawnie skonfigurowany i że wyszukiwanie DNS rejestru kontenerów nie zakończy się niepowodzeniem. Aby uzyskać więcej informacji, zobacz DNS.
- Jeśli funkcja kompilacji w chmurze usługi Container Apps została użyta do wygenerowania obrazu kontenera (zobacz Ścieżka kodu do chmury dla usługi Azure Container Apps, obraz nie jest publicznie dostępny, więc ta sekcja nie ma zastosowania.
W przypadku kontenera platformy Docker, który może działać jako aplikacja konsolowa, sprawdź, czy obraz jest publicznie dostępny, uruchamiając następujące polecenie w wierszu polecenia z podwyższonym poziomem uprawnień. Przed uruchomieniem tego polecenia zastąp symbole zastępcze otoczone <>
wartościami.
docker run --rm <YOUR_CONTAINER_IMAGE>
Sprawdź, czy platforma Docker uruchamia obraz bez zgłaszania błędów. Jeśli korzystasz z platformy Docker w systemie Windows, upewnij się, że masz uruchomiony aparat platformy Docker.
Jeśli obraz nie jest publicznie dostępny, może zostać wyświetlony następujący błąd.
docker: Error response from daemon: pull access denied for <YOUR_CONTAINER_IMAGE>, repository does not exist or may require 'docker login': denied: requested access to the resource is denied. See 'docker run --help'.
Aby uzyskać więcej informacji, zobacz Networking in Azure Container Apps environment (Sieć w środowisku usługi Azure Container Apps).
Przeglądanie konfiguracji ruchu przychodzącego
Ustawienia ruchu przychodzącego aplikacji kontenera są wymuszane za pomocą zestawu reguł kontrolujących routing ruchu zewnętrznego i wewnętrznego do aplikacji kontenera. Jeśli nie możesz nawiązać połączenia z aplikacją kontenera, przejrzyj te ustawienia ruchu przychodzącego, aby upewnić się, że ustawienia ruchu przychodzącego nie blokują żądań.
- Zaloguj się w witrynie Azure Portal.
- Na pasku wyszukiwania wprowadź nazwę aplikacji kontenera.
- W obszarze Zasoby wybierz nazwę aplikacji kontenera.
- Na pasku nawigacyjnym rozwiń węzeł Ustawienia i wybierz pozycję Ruch przychodzący.
Problem | Akcja |
---|---|
Czy ruch przychodzący jest włączony? | Sprawdź, czy pole wyboru Włączone jest zaznaczone. |
Czy chcesz zezwolić na ruch przychodzący zewnętrzny? | Sprawdź, czy dla ruchu przychodzącego ustawiono wartość Akceptowanie ruchu z dowolnego miejsca. Jeśli aplikacja kontenera nie nasłuchuje ruchu HTTP, ustaw wartość Ruch przychodzący na Wartość Ograniczona do środowiska aplikacji kontenera. |
Czy klient używa protokołu HTTP lub TCP do uzyskiwania dostępu do aplikacji kontenera? | Sprawdź, czy typ ruchu przychodzącego jest ustawiony na prawidłowy protokół (HTTP lub TCP). |
Czy klient obsługuje bibliotekę mTLS? | Sprawdź, czy tryb certyfikatu klienta jest ustawiony na Wartość Wymagaj tylko wtedy, gdy klient obsługuje bibliotekę mTLS. Aby uzyskać więcej informacji, zobacz konfigurowanie uwierzytelniania certyfikatu klienta. |
Czy klient korzysta z protokołu HTTP/1 lub HTTP/2? | Sprawdź, czy dla transportu ustawiono poprawną wersję PROTOKOŁU HTTP (HTTP/1 lub HTTP/2). |
Czy port docelowy jest ustawiony poprawnie? | Sprawdź, czy port docelowy jest ustawiony na ten sam port, na który nasłuchuje aplikacja kontenera, lub ten sam port uwidoczniony przez plik Dockerfile aplikacji kontenera. |
Czy twój adres IP klienta jest odrzucany? | Jeśli tryb ograniczeń zabezpieczeń adresu IP nie jest ustawiony na Zezwalaj na cały ruch, sprawdź, czy klient nie ma adresu IP, który jest blokowany. |
Aby uzyskać więcej informacji, zobacz Ruch przychodzący w usłudze Azure Container Apps.
Weryfikowanie konfiguracji sieci
Rekursywne narzędzia rozpoznawania nazw platformy Azure używają adresu 168.63.129.16
IP do rozpoznawania żądań.
- Jeśli sieć wirtualna używa niestandardowego serwera DNS zamiast domyślnego serwera DNS dostarczonego przez platformę Azure, skonfiguruj serwer DNS do przekazywania nierozwiązanych zapytań DNS do
168.63.129.16
usługi . - Podczas konfigurowania sieciowej grupy zabezpieczeń lub zapory nie blokuj
168.63.129.16
adresu.
Aby uzyskać więcej informacji, zobacz Networking in Azure Container Apps environment (Sieć w środowisku usługi Azure Container Apps).
Weryfikowanie konfiguracji sond kondycji
W przypadku wszystkich typów sond kondycji (kondycja, gotowość i uruchamianie), które używają protokołu TCP jako transportu, sprawdź, czy ich numery portów są zgodne z portem docelowym ruchu przychodzącego skonfigurowanego dla aplikacji kontenera.
- Zaloguj się w witrynie Azure Portal.
- Na pasku wyszukiwania wprowadź nazwę aplikacji kontenera.
- W obszarze Zasoby wybierz nazwę aplikacji kontenera.
- Na pasku nawigacyjnym rozwiń węzeł Aplikacja i wybierz pozycję Kontenery.
- Na stronie Kontenery wybierz pozycję Sondy kondycji.
- Rozwiń węzeł Sondy liveness, sondy gotowości i sondy uruchamiania.
- Dla każdej sondy sprawdź, czy wartość portu jest poprawna.
Zaktualizuj wartości portów w następujący sposób:
- Wybierz pozycję Edytuj i wdróż , aby utworzyć nową wersję.
- Na stronie Tworzenie i wdrażanie nowej poprawki zaznacz pole wyboru obok obrazu kontenera i wybierz pozycję Edytuj.
- W oknie Edytowanie kontenera wybierz pozycję Sondy kondycji.
- Rozwiń węzeł Sondy liveness, sondy gotowości i sondy uruchamiania.
- Dla każdej sondy zmodyfikuj wartość Port .
- Wybierz przycisk zapisywania.
- Na stronie Tworzenie i wdrażanie nowej poprawki wybierz przycisk Utwórz.
Konfigurowanie sond kondycji na potrzeby rozszerzonego czasu uruchamiania
Jeśli ruch przychodzący jest włączony, następujące sondy domyślne są automatycznie dodawane do głównego kontenera aplikacji, jeśli żaden z nich nie jest zdefiniowany dla każdego typu.
Poniżej przedstawiono wartości domyślne dla każdego typu sondy.
Właściwości | Uruchamianie | Gotowość | Liveness (Żywość) |
---|---|---|---|
Protokół | TCP | TCP | TCP |
Port | Port docelowy ruchu przychodzącego | Port docelowy ruchu przychodzącego | Port docelowy ruchu przychodzącego |
Timeout | 3 sekundy | 5 s | nie dotyczy |
Okres | 1 sekunda | 5 s | nie dotyczy |
Opóźnienie początkowe | 1 sekunda | 3 sekundy | nie dotyczy |
Próg powodzenia | 1 | 1 | nie dotyczy |
Próg niepowodzenia | 240 | 48 | nie dotyczy |
Jeśli uruchomienie aplikacji kontenera zajmuje dłuższy czas (co jest typowe w języku Java), może być konieczne dostosowanie odpowiedniej właściwości czasu wygaśnięcia i gotowości sondy początkowej opóźnienia sekund . Dzienniki można wyświetlić, aby wyświetlić typowy czas uruchamiania aplikacji kontenera.
- Zaloguj się w witrynie Azure Portal.
- Na pasku wyszukiwania wprowadź nazwę aplikacji kontenera.
- W obszarze Zasoby wybierz nazwę aplikacji kontenera.
- Na pasku nawigacyjnym rozwiń węzeł Aplikacja i wybierz pozycję Kontenery.
- Na stronie Kontenery wybierz pozycję Sondy kondycji.
- Wybierz pozycję Edytuj i wdróż , aby utworzyć nową wersję.
- Na stronie Tworzenie i wdrażanie nowej poprawki zaznacz pole wyboru obok obrazu kontenera i wybierz pozycję Edytuj.
- W oknie Edytowanie kontenera wybierz pozycję Sondy kondycji.
- Rozwiń węzeł Sondy liveness.
- Jeśli wybrano opcję Włącz sondy aktualności, zwiększ wartość dla sekund opóźnienia początkowego.
- Rozwiń węzeł Sondy gotowości.
- Jeśli wybrano opcję Włącz sondy gotowości, zwiększ wartość dla sekund opóźnienia początkowego.
- Wybierz pozycję Zapisz.
- Na stronie Tworzenie i wdrażanie nowej poprawki wybierz przycisk Utwórz.
Następnie możesz wyświetlić dzienniki , aby sprawdzić, czy aplikacja kontenera została pomyślnie uruchomiona.
Aby uzyskać więcej informacji, zobacz Używanie sond kondycji.
Sprawdź, czy ruch jest kierowany do poprawnej poprawki
Jeśli aplikacja kontenera nie zachowuje się zgodnie z oczekiwaniami, problem może polegać na tym, że żądania są kierowane do nieaktualnej poprawki.
- Zaloguj się w witrynie Azure Portal.
- Na pasku wyszukiwania wprowadź nazwę aplikacji kontenera.
- W obszarze Zasoby wybierz nazwę aplikacji kontenera.
- Na pasku nawigacyjnym rozwiń węzeł Aplikacja i wybierz pozycję Poprawki.
Jeśli dla trybu poprawek ustawiono Single
wartość , cały ruch jest domyślnie kierowany do najnowszej poprawki. Karta Aktywne poprawki powinna zawierać tylko jedną poprawkę z wartością Ruch o wartości 100%
.
Jeśli dla trybu poprawek ustawiono wartość Multiple
, sprawdź, czy ruch nie jest kierowany do nieaktualnych wersji.
Aby uzyskać więcej informacji na temat konfigurowania podziału ruchu, zobacz Podział ruchu w usłudze Azure Container Apps.
Sprawdź, czy zainstalowano najnowszą wersję rozszerzenia usługi Azure Container Apps
Jeśli podczas uruchamiania az containerapp
poleceń w interfejsie wiersza polecenia platformy Azure lub poleceniach cmdlet z modułu Az.App
w programie Azure 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
Sprawdzanie, czy rozszerzenie usługi Azure Container Apps zezwala na funkcje w wersji zapoznawczej
Jeśli funkcje w wersji zapoznawczej nie są dostępne podczas uruchamiania az containerapp
poleceń w interfejsie wiersza polecenia platformy Azure, włącz funkcje w wersji zapoznawczej w rozszerzeniu Azure Container Apps.
az extension add --name containerapp --upgrade --allow-preview true
Ręczne usuwanie sieci wirtualnej używanej przez środowisko usługi Azure Container Apps
Jeśli zostanie wyświetlony komunikat provisioningState: ScheduledForDelete, ale środowisko nie może rzeczywiście usunąć, pamiętaj, aby ręcznie usunąć skojarzona sieć wirtualna.
Zidentyfikuj sieć wirtualną używaną przez środowisko, które próbujesz usunąć. Zastąp <symbole> ZASTĘPCZE wartościami.
az containerapp env show --resource-group <RESOURCE_GROUP> --name <ENVIRONMENT>
W danych wyjściowych wyszukaj
infrastructureSubnetId
i zanotuj identyfikator sieci wirtualnej. Przykładowy identyfikator sieci wirtualnej tovNet::myVNet.id
.Usuń sieć wirtualną ręcznie:
az network vnet delete --resource-group <RESOURCE_GROUP> --name <VNET_ID>
Usuń środowisko usługi Azure Container Apps:
az containerapp env delete --resource-group <RESOURCE_GROUP> --name <ENVIRONMENT> --yes