Rozwiązywanie problemów z rozszerzeniem połączonego rejestru
W tym artykule omówiono niektóre typowe komunikaty o błędach, które mogą być wyświetlane podczas instalowania lub aktualizowania połączonego rozszerzenia rejestru dla klastrów Kubernetes z włączoną usługą Arc.
Jak zainstalowano połączone rozszerzenie rejestru
Połączone rozszerzenie rejestru jest wydawane jako pakiet helm i instalowane przez program Helm w wersji 3. Wszystkie składniki połączonego rozszerzenia rejestru są instalowane w przestrzeni nazw połączonego rejestru . Aby sprawdzić stan rozszerzenia, możesz użyć następujących poleceń.
# get the extension status
az k8s-extension show --name <extension-name>
# check status of all pods of connected registry extension
kubectl get pod -n connected-registry
# get events of the extension
kubectl get events -n connected-registry --sort-by='.lastTimestamp'
Typowe błędy
Błąd: nie można ponownie użyć nazwy, która jest nadal używana
Ten błąd oznacza, że określona nazwa rozszerzenia już istnieje. Jeśli nazwa jest już używana, musisz użyć innej nazwy.
Błąd: nie można utworzyć nowej zawartości w połączonym rejestrze przestrzeni nazw, ponieważ jest ona przerywana
Ten błąd występuje, gdy operacja odinstalowywania nie zostanie zakończona, a kolejna operacja instalacji zostanie wyzwolona. Możesz uruchomić polecenie az k8s-extension show
, aby sprawdzić stan aprowizacji rozszerzenia i upewnić się, że rozszerzenie zostało odinstalowane przed podjęciem innych akcji.
Błąd: nie można pobrać, nie znaleziono ścieżki pakietu
Ten błąd występuje, gdy określisz nieprawidłową wersję rozszerzenia. Musisz upewnić się, że określona wersja istnieje. Jeśli chcesz użyć najnowszej wersji, nie musisz określać elementu --version
.
Typowe scenariusze
Scenariusz 1. Instalacja kończy się niepowodzeniem, ale nie wyświetla komunikatu o błędzie
Jeśli rozszerzenie generuje komunikat o błędzie podczas jego tworzenia lub aktualizowania, możesz sprawdzić, gdzie tworzenie nie powiodło się, uruchamiając az k8s-extension list
polecenie :
az k8s-extension list \
--resource-group <my-resource-group-name> \
--cluster-name <my-cluster-name> \
--cluster-type connectedClusters
Rozwiązanie: Uruchom ponownie klaster, zarejestruj dostawcę usług lub usuń i ponownie zainstaluj połączony rejestr
Aby rozwiązać ten problem, wypróbuj następujące metody:
Uruchom ponownie klaster Usługi Arc Kubernetes.
Zarejestruj dostawcę usługi KubernetesConfiguration.
Wymuś usunięcie i ponowne zainstalowanie połączonego rozszerzenia rejestru.
Scenariusz 2. Docelowa wersja rejestru połączonego nie istnieje
Podczas próby zainstalowania połączonego rozszerzenia rejestru w celu konkretnej wersji zostanie wyświetlony komunikat o błędzie informujący, że połączona wersja rejestru nie istnieje.
Rozwiązanie: Zainstaluj ponownie dla obsługiwanej wersji połączonego rejestru
Spróbuj ponownie zainstalować rozszerzenie. Upewnij się, że używasz obsługiwanej wersji połączonego rejestru.
Typowe problemy
Problem: Tworzenie rozszerzenia zablokowane w stanie uruchomienia
Możliwość 1: Problem z trwałym oświadczeniem woluminu (PVC)
- Sprawdzanie stanu połączonego rejestru PVC
kubectl get pvc -n connected-registry -o yaml connected-registry-pvc
Wartość fazy w stanie powinna być powiązana. Jeśli nie zmieni się z oczekujących, usuń rozszerzenie.
- Sprawdź, czy żądana klasa magazynu znajduje się na liście klas magazynu:
kubectl get storageclass --all-namespaces
- Jeśli nie, utwórz ponownie rozszerzenie i dodaj
--config pvc.storageClassName=”standard”`
- Alternatywnie może to być problem z brakiem wystarczającej ilości miejsca na PVC. Ponowne utworzenie rozszerzenia za pomocą parametru
--config pvc.storageRequest=”250Gi”`
Możliwość 2: Parametry połączenia są złe
- Sprawdź dzienniki połączonego zasobnika rejestru:
kubectl get pod -n connected-registry
- Skopiuj nazwę połączonego zasobnika rejestru (np. "connected-registry-8d886cf7f-w4prp") i wklej ją do następującego polecenia:
kubectl logs -n connected-registry connected-registry-8d886cf7f-w4prp
- Jeśli zostanie wyświetlony następujący komunikat o błędzie, parametry połączenia połączonego rejestru jest nieprawidłowe:
Response: '{"errors":[{"code":"UNAUTHORIZED","message":"Incorrect Password","detail":"Please visit https://aka.ms/acr#UNAUTHORIZED for more information."}]}'
- Upewnij się, że utworzono plik protected-settings-extension.json
cat protected-settings-extension.json
- W razie potrzeby ponownie wygeneruj protected-settings-extension.json
cat << EOF > protected-settings-extension.json
{
"connectionString": "$(az acr connected-registry get-settings \
--name myconnectedregistry \
--registry myacrregistry \
--parent-protocol https \
--generate-password 1 \
--query ACR_REGISTRY_CONNECTION_STRING --output tsv --yes)"
}
EOF
- Aktualizowanie rozszerzenia w celu uwzględnienia nowego parametry połączenia
az k8s-extension update \
--cluster-name <myarck8scluster> \
--cluster-type connectedClusters \
--name <myconnectedregistry> \
-g <myresourcegroup> \
--config-protected-file protected-settings-extension.json
Problem: Utworzono rozszerzenie, ale połączony rejestr nie jest stanem "Online"
Możliwość 1: Poprzedni połączony rejestr nie został zdezaktywowany
Ten scenariusz występuje często, gdy poprzednie połączone rozszerzenie rejestru zostało usunięte, a nowy został utworzony dla tego samego połączonego rejestru.
- Sprawdź dzienniki połączonego zasobnika rejestru:
kubectl get pod -n connected-registry
- Skopiuj nazwę połączonego zasobnika rejestru (np. "connected-registry-xxxxxxx-xxxxx") i wklej ją w następującym poleceniu:
kubectl logs -n connected-registry connected-registry-xxxxxxxxx-xxxxx
- Jeśli zostanie wyświetlony następujący komunikat o błędzie, należy dezaktywować połączony rejestr:
Response: '{"errors":[{"code":"ALREADY_ACTIVATED","message":"Failed to activate the connected registry as it is already activated by another instance. Only one instance is supported at any time.","detail":"Please visit https://aka.ms/acr#ALREADY_ACTIVATED for more information."}]}'
- Uruchom następujące polecenie, aby dezaktywować:
az acr connected-registry deactivate -n <myconnectedregistry> -r <mycontainerregistry>
Po kilku minutach połączony zasobnik rejestru powinien zostać ponownie utworzony, a błąd powinien zniknąć.
Włącz rejestrowanie
- Uruchom polecenie [az acr connected-registry update], aby zaktualizować połączone rozszerzenie rejestru przy użyciu poziomu dziennika debugowania:
az acr connected-registry update --registry mycloudregistry --name myacrregistry --log-level debug
Do pomocy w rozwiązywaniu problemów można zastosować następujące poziomy dziennika:
Debugowanie zawiera szczegółowe informacje na potrzeby debugowania.
Informacje zawierają ogólne informacje na potrzeby debugowania.
Ostrzeżenie wskazuje potencjalne problemy, które nie są jeszcze błędami, ale mogą stać się jednym, jeśli nie zostanie podjęta żadna akcja.
Błędy rejestrują błędy, które uniemożliwiają ukończenie operacji.
Brak wyłącza rejestrowanie, więc nie są zapisywane żadne komunikaty dziennika.
Dostosuj poziom dziennika zgodnie z potrzebami, aby rozwiązać problem.
Aktywny wybór zapewnia więcej opcji dostosowywania szczegółowości dzienników podczas debugowania problemów z połączonym rejestrem. Dostępne są następujące opcje:
Poziom dziennika rejestru połączonego jest specyficzny dla operacji połączonego rejestru i określa ważność komunikatów obsługiwanych przez połączony rejestr. To ustawienie służy do zarządzania zachowaniem rejestrowania samego połączonego rejestru.
--log-level ustaw poziom dziennika w wystąpieniu. Poziom dziennika określa ważność komunikatów obsługiwanych przez rejestrator. Ustawiając poziom dziennika, można odfiltrować komunikaty, które są poniżej określonej ważności. Jeśli na przykład ustawisz poziom dziennika na "ostrzeżenie", rejestrator obsługuje ostrzeżenia, błędy i komunikaty krytyczne, ale ignoruje informacje i komunikaty debugowania.
Poziom dziennika az cli steruje szczegółowością komunikatów wyjściowych podczas działania interfejsu wiersza polecenia platformy Azure. Interfejs wiersza polecenia platformy Azure (az) udostępnia kilka opcji szczegółowości poziomów dziennika, które można dostosować w celu kontrolowania ilości informacji wyjściowych podczas jej operacji:
--verbose zwiększa szczegółowość dzienników. Zawiera on bardziej szczegółowe informacje niż ustawienie domyślne, które może być przydatne do identyfikowania problemów.
--debug umożliwia pełne dzienniki debugowania. Dzienniki debugowania zawierają najbardziej szczegółowe informacje, w tym wszystkie informacje podane na poziomie "pełne" oraz więcej szczegółów przeznaczonych do diagnozowania problemów.