Udostępnij za pośrednictwem


Rozwiązywanie problemów z błędami "az aks command invoke"

W tym artykule opisano sposób rozwiązywania problemów z błędami wywołania polecenia az aks w interfejsie wiersza polecenia platformy Microsoft Azure, dzięki czemu można pomyślnie nawiązać połączenie z dowolnym klastrem Azure Kubernetes Service (AKS), zwłaszcza z prywatnym klastrem usługi AKS.

Inne metody połączeń muszą używać dodatkowych składników konfiguracji, jak pokazano w poniższej tabeli.

Metody połączeń Dodatkowy składnik konfiguracji
Sieć wirtualna Wirtualna sieć prywatna (VPN)
Sieć równorzędna Usługa ExpressRoute platformy Azure
Prywatny punkt końcowy Przesiadka

Polecenie interfejsu wiersza az aks command invoke polecenia platformy Azure to alternatywny sposób nawiązywania połączenia z klastrem, który nie wymaga dodatkowych składników konfiguracji.

Po uruchomieniu az aks command invoke polecenia interfejs wiersza polecenia platformy Azure automatycznie tworzy command-<ID> zasobnik w przestrzeni nazw w aks-command celu uzyskania dostępu do klastra usługi AKS i pobrania wymaganych informacji.

Wymagania wstępne

Symptomy

W poniższej tabeli wymieniono typowe az aks command invoke komunikaty o błędach. Każdy komunikat o błędzie zawiera link do sekcji opisującej przyczynę wystąpienia błędu i sposób jego naprawiania.

Komunikat o błędzie Link
Operacja zwróciła nieprawidłowy stan "Nie znaleziono" Przyczyna 1. Nie można utworzyć zasobnika z powodu ograniczeń węzła lub zasobów
Nie można uruchomić polecenia w klastrze zarządzanym z powodu błędu kubernetes. details: wstęp elementu webhook "validation.gatekeeper.sh" odrzucił żądanie: <komunikat specyficzny dla zasad> Przyczyna 2: Azure Policy nie zezwala na tworzenie zasobnika
Błąd z serwera (zabronione): przestrzenie nazw są zabronione: Użytkownik "<ID>" nie może wyświetlić zasobu "<zasób>" w grupie interfejsów API "" w zakresie klastra Przyczyna 3. Nie są przyznawane wymagane role
Nie można nawiązać połączenia z usługą MSI. Upewnij się, że tożsamość usługi zarządzanej jest poprawnie skonfigurowana.

Pobierz zwrócone żądanie tokenu: Odpowiedź [400];
Przyczyna 4. Wystąpił problem Cloud Shell

Przyczyna 1. Nie można utworzyć zasobnika z powodu ograniczeń węzła lub zasobów

Operacja zwraca Not Found stan, ponieważ command-<ID> zasobnik nie może osiągnąć stanu pomyślnego, takiego jak Running. (W wielu przypadkach zasobnik pozostaje w Pending stanie). W takim przypadku węzły nie mogą zaplanować zasobnika. Ten scenariusz może mieć różne przyczyny, takie jak następujące przyczyny:

  • Ograniczenia zasobów
  • Węzły, które mają NotReady stan lub SchedulingDisabled
  • Węzły, które mają skazy, których zasobnik nie może tolerować
  • Inne przyczyny

Rozwiązanie 1. Zmień konfigurację, aby można było zaplanować i uruchomić zasobnik

Upewnij się, że command-<ID> zasobnik można zaplanować i uruchomić.

Przyczyna 2: Azure Policy nie zezwala na tworzenie zasobnika

Jeśli masz określone zasady platformy Azure, az aks command invoke polecenie może zakończyć się niepowodzeniem z powodu niedozwolonej konfiguracji w zasobniku command-<ID> . Na przykład mogą istnieć zasady platformy Azure, które wymagają głównego systemu plików tylko do odczytu lub innej konkretnej konfiguracji.

Rozwiązanie 2: Wykluczenie przestrzeni nazw dla zasad, które uniemożliwiają tworzenie zasobnika

Zalecamy wykluczenie aks-command przestrzeni nazw dla skojarzonych zasad platformy Azure, które nie zezwalają na tworzenie zasobnika. Aby uzyskać więcej informacji na temat wykluczania, zobacz Omówienie zakresu w Azure Policy

Aby zwolnić Azure Policy:

  1. W Azure Portal wyszukaj i wybierz pozycję Zasady.

  2. W okienku nawigacji Zasady znajdź sekcję Tworzenie , a następnie wybierz pozycję Przypisania.

  3. W tabeli przypisań znajdź wiersz zawierający nazwę przypisania , którą chcesz zmienić, a następnie wybierz nazwę przypisania.

  4. Na stronie przypisania zasad dla tego przypisania wybierz pozycję Edytuj przypisanie.

  5. Wybierz kartę Parametry .

  6. Wyczyść opcję Pokaż tylko parametry, które wymagają danych wejściowych lub przeglądania .

  7. W polu Wykluczenia przestrzeni nazw dodaj przestrzeń nazw aks-command do listy przestrzeni nazw, które mają zostać wykluczone.

Alternatywnie, jeśli zasady nie są wbudowanymi zasadami, możesz sprawdzić konfigurację command-<ID> zasobnika i dostosować zasady w razie potrzeby. Aby eksplorować konfigurację YAML zasobnika, uruchom następujące polecenie:

kubectl get pods command-<ID> --namespace aks-command --output yaml

Przyczyna 3. Nie są przyznawane wymagane role

Aby użyć az aks command invoke polecenia, musisz mieć dostęp do następujących ról w klastrze:

  • Microsoft.ContainerService/managedClusters/runCommand/action
  • Microsoft.ContainerService/managedClusters/commandResults/read

Jeśli nie masz tych ról, az aks command invoke polecenie nie może pobrać wymaganych informacji.

Rozwiązanie 3. Dodawanie wymaganych ról

Microsoft.ContainerService/managedClusters/runCommand/action Dodaj role iMicrosoft.ContainerService/managedClusters/commandResults/read.

Przyczyna 4. Wystąpił problem Cloud Shell

Polecenie az aks command invoke nie jest przetwarzane zgodnie z oczekiwaniami, gdy jest uruchamiane bezpośrednio w środowisku usługi Azure Cloud Shell. Jest to znany problem w Cloud Shell.

Rozwiązanie 4a: Najpierw uruchom polecenie az login

W Cloud Shell uruchom polecenie az login przed uruchomieniem polecenia az aks command invoke.

Rozwiązanie 4b: Uruchom polecenie na komputerze lokalnym lub maszynie wirtualnej

az aks command invoke Uruchom polecenie na komputerze lokalnym lub dowolnej maszynie wirtualnej z zainstalowanym interfejsem wiersza polecenia platformy Azure.

Zastrzeżenie dotyczące innych firm

Produkty innych firm omówione w tym artykule są wytwarzane przez producentów niezależnych od firmy Microsoft. Firma Microsoft nie udziela żadnych gwarancji, dorozumianych ani żadnego innego rodzaju, w odniesieniu do wydajności lub niezawodności tych produktów.

Skontaktuj się z nami, aby uzyskać pomoc

Jeśli masz pytania lub potrzebujesz pomocy, utwórz wniosek o pomoc techniczną lub zadaj pytanie w społeczności wsparcia dla platformy Azure. Możesz również przesłać opinię o produkcie do społeczności opinii platformy Azure.