Udostępnij za pośrednictwem


Podstawowe rozwiązywanie problemów z tworzeniem klastra usługi AKS

W tym artykule opisano podstawowe metody rozwiązywania problemów, których można użyć, jeśli nie można pomyślnie utworzyć ani wdrożyć klastra usługi Microsoft Azure Kubernetes Service (AKS).

Wymagania wstępne

Wyświetlanie błędów z interfejsu wiersza polecenia platformy Azure

Jeśli operacja zakończy się niepowodzeniem podczas próby utworzenia klastrów przy użyciu interfejsu wiersza polecenia platformy Azure, dane wyjściowe wyświetlają informacje o błędzie. Oto przykładowe polecenie i dane wyjściowe interfejsu wiersza polecenia platformy Azure:

# Create a cluster specifying subnet

az aks create --resource-group myResourceGroup
--name MyManagedCluster \
--load-balancer-sku standard \
--vnet-subnet-id /subscriptions/<subscriptions-id>/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/aks_demo_vnet/subnets/AKS

Przykład danych wyjściowych:

It is highly recommended to use USER assigned identity (option --assign-identity)when you want to bring you own subnet, which will have no latency for the role assignment to take effect. When you SYSTEM assigned identity, azure-cli will grant Network Contributor role to the system assigned identity after the cluster is created, and the role assignment will take some time to take effect, see https://learn.microsoft.com/azure/aks/use-managed-identity, proceed to create cluster with system assigned identity? (y/N): y`

(ControlPlaneAddOnsNotReady) Pods not in Running status: konnectivity-agent-67f7f5554f-nsw2g,konnectivity-agent-8686cb54fd-xlsgk,metrics-server-6bc97b47f7-dfhbr,coredns-845757d86-7xjqb,coredns-autoscaler-5f85dc856b-mxkrj

Kod błędu i komunikat o błędzie można zidentyfikować z danych wyjściowych. W tym przypadku są to:

  • Kod błędu: ControlPlaneAddOnsNotReady
  • Komunikat o błędzie: Pods not in Running status: konnectivity-agent-67f7f5554f-nsw2g,konnectivity-agent-8686cb54fd-xlsgk,metrics-server-6bc97b47f7-dfhbr,coredns-845757d86-7xjqb,coredns-autoscaler-5f85dc856b-mxkrj.

Te opisy często zawierają szczegółowe informacje o tym, co poszło nie tak w tworzeniu klastra, i łączą się z artykułami zawierającymi jeszcze więcej szczegółów. Ponadto możesz użyć naszych artykułów dotyczących rozwiązywania problemów jako odwołania na podstawie błędów generowanych przez operację interfejsu wiersza polecenia platformy Azure.

Wyświetlanie szczegółów błędu w witrynie Azure Portal

Aby zbadać błędy tworzenia klastra usługi AKS w witrynie Azure Portal, otwórz dziennik aktywności. Wyniki można filtrować zgodnie z potrzebami. W tym celu wybierz pozycję Dodaj filtr , aby dodać więcej właściwości do filtru.

Zrzut ekranu przedstawiający sposób dodawania filtru.

Na stronie Dziennik aktywności znajdź wpisy dziennika, w których w kolumnie Nazwa operacji jest wyświetlana pozycja Utwórz lub Zaktualizuj klaster zarządzany.

W kolumnie Zdarzenie zainicjowane przez kolumnę pokazano użytkownika, który wykonał operację, co może być kontem służbowym, kontem szkolnym lub tożsamością zarządzaną platformy Azure.

Jeśli operacja zakończy się pomyślnie, wartość kolumny Stan to Zaakceptowano. Zostaną również wyświetlone wpisy podrzędne dotyczące tworzenia składników klastra, takie jak następujące nazwy operacji:

  • Tworzenie lub aktualizowanie tabeli tras
  • Tworzenie lub aktualizowanie sieciowej grupy zabezpieczeń
  • Aktualizowanie tworzenia tożsamości przypisanej przez użytkownika
  • Tworzenie lub aktualizowanie modułu równoważenia obciążenia
  • Tworzenie lub aktualizowanie publicznego adresu IP
  • Tworzenie przypisania roli
  • Aktualizowanie grupy zasobów

W tych wpisach podoperacji wartość Stan to Powodzenie, a zdarzenie zainicjowane przez pole ma wartość AzureContainerService.

Zrzut ekranu przedstawiający widok w dzienniku aktywności.

Co zrobić, jeśli zamiast tego wystąpił błąd? W takim przypadku wartość Stan to Niepowodzenie. W przeciwieństwie do operacji tworzenia składników klastra, należy rozwinąć wpisy podrzędne, aby je przejrzeć. Typowe nazwy podoperacji to akcje zasad, takie jak akcja zasad "audit" i akcja zasad "auditIfNotExists". Nie wszystkie podoperacje muszą zakończyć się niepowodzeniem. Można oczekiwać, że niektóre z nich powiedzą się.

Wybierz jedną z nieudanych podoperacji, aby dokładniej go zbadać. Wybierz karty Podsumowanie, JSON i Historia zmian, aby rozwiązać ten problem. Karta JSON zawiera tekst wyjściowy błędu w formacie JSON i zwykle zawiera najbardziej przydatne informacje.

Zrzut ekranu przedstawiający szczegółowy dziennik w formacie JSON.

Oto przykład szczegółowego dziennika w formacie JSON:

{
     "status": {
        "value": "Failed",
        "localizedValue": "Failed"
    },
    "subStatus": {
        "value": "",
        "localizedValue": ""
    },
    "submissionTimestamp": "2024-08-30T10:06:07Z",
    "subscriptionId": "<subscriptionId>",
    "tenantId": "<tenantId>",
    "properties": {
        "statusMessage": "{\"status\":\"Failed\",\"error\":{\"code\":\"ResourceOperationFailure\",\"message\":\"The resource operation completed with terminal provisioning state 'Failed'.\",\"details\":[{\"code\":\"VMExtensionProvisioningError\",\"message\":\"Unable to establish outbound connection from agents, please see https://learn.microsoft.com/en-us/troubleshoot/azure/azure-kubernetes/error-code-outboundconnfailvmextensionerror and https://aka.ms/aks-required-ports-and-addresses for more information.\"}]}}",
}
}

Wyświetlanie szczegółowych informacji o klastrze

Czy klaster został utworzony w witrynie Azure Portal i czy jest tam widoczny? Jeśli tak jest, możesz wygenerować szczegółowe informacje dotyczące klastra, które pomogą Ci rozwiązać problemy. Aby uzyskać dostęp do tej funkcji, wykonaj następujące kroki:

  1. W witrynie Azure Portal wyszukaj i wybierz pozycję Usługi Kubernetes.

  2. Wybierz nazwę klastra usługi AKS.

  3. W okienku nawigacji na stronie klastra usługi AKS wybierz pozycję Diagnozuj i rozwiąż problemy.

  4. Na stronie Diagnozowanie i rozwiązywanie problemów wybierz link Szczegółowe informacje o klastrze. Narzędzie analizy klastra analizuje klaster, a następnie udostępnia listę swoich wyników w sekcji Obserwacje i rozwiązania na stronie Szczegółowe informacje o klastrze.

  5. Wybierz jedno z wyników, aby wyświetlić więcej informacji o problemie i jego możliwych rozwiązaniach.

Wyświetlanie zasobów w witrynie Azure Portal

W witrynie Azure Portal możesz wyświetlić zasoby utworzone podczas tworzenia klastra. Zazwyczaj te zasoby znajdują się w grupie zasobów, której nazwa zaczyna się w MC_. Grupa zasobów klastra zarządzanego może mieć nazwę, taką jak MC_MyResourceGroup_MyManagedCluster_location-code>.< Jednak nazwa może być inna, jeśli utworzono klaster przy użyciu niestandardowej grupy zasobów klastra zarządzanego.

Aby znaleźć grupę zasobów, wyszukaj i wybierz pozycję Grupy zasobów w witrynie Azure Portal, a następnie wybierz grupę zasobów, w której utworzono klaster. Lista zasobów jest wyświetlana na stronie Przegląd grupy zasobów.

Ostrzeżenie

Zalecamy, aby nie modyfikować zasobów w grupie zasobów MC_ . Ta akcja może niekorzystnie wpłynąć na klaster usługi AKS.

Aby przejrzeć stan zestawu skalowania maszyn wirtualnych, możesz wybrać nazwę zestawu skalowania na liście zasobów dla grupy zasobów. Może mieć wartość Name podobną do aks-nodepool1-12345678-vmss oraz wartość typu zestawu skalowania maszyn wirtualnych. Stan zestawu skalowania jest wyświetlany w górnej części strony Przegląd puli węzłów, a więcej szczegółów znajduje się w nagłówku Podstawy. Jeśli wdrożenie nie powiodło się, wyświetlany stan to Niepowodzenie.

W przypadku wszystkich zasobów możesz przejrzeć szczegóły, aby lepiej zrozumieć, dlaczego wdrożenie nie powiodło się. W przypadku zestawu skalowania możesz wybrać tekst Stan niepowodzenie , aby wyświetlić szczegółowe informacje o awarii. Szczegóły znajdują się w wierszu zawierającym kolumny Stan, Poziom i Kod . W poniższym przykładzie przedstawiono wiersz wartości kolumn.

Kolumna Przykładowa wartość
Stan Inicjowanie obsługi administracyjnej nie powiodło się
Poziom Błąd
Kod ProvisioningState/failed/VMExtensionProvisioningError

Wybierz wiersz, aby wyświetlić pole Komunikat . Zawiera jeszcze więcej informacji na temat tego błędu. Na przykład pole Komunikat dla przykładowego wiersza rozpoczyna się w następującym tekście:

Maszyna wirtualna zgłosiła błąd podczas przetwarzania rozszerzenia "vmssCSE". Komunikat o błędzie: "Enable failed: failed to execute command: command terminated with exit status=50 [stdout] [stderr] 0 0 0 --:

Dzięki tym informacjom możesz stwierdzić, że maszyny wirtualne w zestawie skalowania nie powiodły się i wygenerowały stan zakończenia 50.

Uwaga 16.

Jeśli wdrożenie klastra nie dotarło do punktu, w którym te zasoby zostałyby utworzone, może nie być możliwe przejrzenie grupy zasobów klastra zarządzanego w witrynie Azure Portal.

Korzystanie z poleceń kubectl

Aby ułatwić rozwiązywanie problemów z błędami w klastrze, użyj poleceń kubectl, aby uzyskać szczegółowe informacje o zasobach wdrożonych w klastrze. W tym celu najpierw zaloguj się do klastra usługi AKS:

az aks get-credentials --resource-group MyResourceGroup --name MyManagedCluster

W zależności od typu awarii i wystąpienia może nie być możliwe zalogowanie się do klastra w celu uzyskania dodatkowych szczegółów. Jeśli jednak klaster został utworzony i pojawi się w witrynie Azure Portal, powinno być możliwe zalogowanie się i uruchomienie poleceń kubectl.

Wyświetlanie węzłów klastra (kubectl get nodes)

Aby określić stan węzłów klastra, wyświetl węzły, uruchamiając kubectl get nodes polecenie . W tym przykładzie w klastrze nie są raportowane żadne węzły:

$ kubectl get nodes

No resources found

Wyświetlanie zasobników w przestrzeni nazw systemu (kubectl get zasobników)

Wyświetlanie zasobników w przestrzeni nazw kube-system jest również dobrym sposobem rozwiązania problemu. Ta metoda umożliwia wyświetlenie stanu zasobników systemu Kubernetes. W tym przykładzie kubectl get pods wprowadzamy polecenie:

$ kubectl get pods -n kube-system
NAME                                  READY   STATUS    RESTARTS   AGE
coredns-845757d86-7xjqb               0/1     Pending   0          78m
coredns-autoscaler-5f85dc856b-mxkrj   0/1     Pending   0          77m
konnectivity-agent-67f7f5554f-nsw2g   0/1     Pending   0          77m
konnectivity-agent-8686cb54fd-xlsgk   0/1     Pending   0          65m
metrics-server-6bc97b47f7-dfhbr       0/1     Pending   0          77m

Opisywanie stanu zasobnika (kubectl describe pod)

Opisując stan zasobników, można wyświetlić szczegóły konfiguracji i wszelkie zdarzenia, które wystąpiły w zasobnikach. kubectl describe pods Uruchom polecenie:

$ kubectl describe pod coredns-845757d86-7xjqb -n kube-system
Name:                 coredns-845757d86-7xjqb
Namespace:            kube-system
Priority:             2000001000
Priority Class Name:  system-node-critical
Node:                 <none>
Labels:               k8s-app=kube-dns
                      kubernetes.io/cluster-service=true
                      pod-template-hash=845757d86
                      version=v20
...
Events:
  Type     Reason            Age                 From               Message
  ----     ------            ----                ----               -------
  Warning  FailedScheduling  24m (x1 over 25m)   default-scheduler  no nodes available to schedule pods
  Warning  FailedScheduling  29m (x57 over 84m)  default-scheduler  no nodes available to schedule pods

W danych wyjściowych polecenia widać, że zasobnik nie może zostać wdrożony w węźle, ponieważ nie są dostępne żadne węzły.

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 na temat platformy Azure.