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
Narzędzie Kubernetes kubectl . Aby zainstalować narzędzie kubectl przy użyciu interfejsu wiersza polecenia platformy Azure, uruchom polecenie az aks install-cli .
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 lubSchedulingDisabled
- 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:
W Azure Portal wyszukaj i wybierz pozycję Zasady.
W okienku nawigacji Zasady znajdź sekcję Tworzenie , a następnie wybierz pozycję Przypisania.
W tabeli przypisań znajdź wiersz zawierający nazwę przypisania , którą chcesz zmienić, a następnie wybierz nazwę przypisania.
Na stronie przypisania zasad dla tego przypisania wybierz pozycję Edytuj przypisanie.
Wybierz kartę Parametry .
Wyczyść opcję Pokaż tylko parametry, które wymagają danych wejściowych lub przeglądania .
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.