Udostępnij za pośrednictwem


Rozwiązywanie problemów z interfejsem API ClusterResourcePlacement w usłudze Azure Kubernetes Fleet Manager

Ten przewodnik rozwiązywania problemów ułatwia rozwiązywanie ClusterResourcePlacement problemów związanych z obiektami interfejsu API podczas korzystania z usługi Azure Kubernetes Fleet Manager. Rozwiązywanie problemów z tymi błędami w klastrze centrum wymaga znajomości następujących obiektów:

  • ClusterResourceSnapshot
  • ClusterSchedulingPolicySnapshot
  • ClusterResourceBinding
  • Work

Aby uzyskać więcej informacji na temat każdego obiektu, zobacz dokumentację interfejsu API.

Kompletna progresja wdrożenia ClusterResourcePlacement

Zrozumienie postępu i stanu zasobu niestandardowego ClusterResourcePlacement ma kluczowe znaczenie dla diagnozowania i identyfikowania błędów. Stan zasobu niestandardowego ClusterResourcePlacement można wyświetlić przy użyciu następującego polecenia:

kubectl describe clusterresourceplacement <name>

Aby uzyskać więcej informacji, zobacz Używanie interfejsu API ClusterResourcePlacement do propagowania zasobów do klastrów członkowskich.

Pełny postęp operacji ClusterResourcePlacement jest następujący:

  1. ClusterResourcePlacementScheduled: wskazuje, że zasób został zaplanowany do umieszczania.

    Jeśli wartość false, zobacz Jak rozwiązywać problemy, gdy stan warunku ClusterResourcePlacementScheduled ma wartość false.

  2. ClusterResourcePlacementRolloutStarted: wskazuje, że proces wdrażania rozpoczął się.

    Jeśli wartość false, zobacz Jak rozwiązywać problemy, gdy stan warunku ClusterResourcePlacementRolloutStarted ma wartość false.

  3. ClusterResourcePlacementOverridden: wskazuje, że zasób został zastąpiony.

    Jeśli wartość false, zobacz Jak rozwiązywać problemy, gdy stan warunku ClusterResourcePlacementOverridden ma wartość false.

  4. ClusterResourcePlacementWorkSynchronized: wskazuje, że obiekty robocze zostały zsynchronizowane.

    Jeśli wartość false, zobacz Jak rozwiązywać problemy, gdy stan warunku ClusterResourcePlacementWorkSynchronized ma wartość false.

  5. ClusterResourcePlacementApplied: wskazuje, że zasób został zastosowany.

    Jeśli wartość false, zobacz Jak rozwiązywać problemy, gdy stan warunku ClusterResourcePlacementApplied ma wartość false.

  6. ClusterResourcePlacementAvailable: wskazuje, że zasób jest dostępny.

    Jeśli wartość false, zobacz Jak rozwiązywać problemy, gdy stan warunku ClusterResourcePlacementAvailable ma wartość false.

Często zadawane pytania

Jak mogę debugować, jeśli niektóre klastry nie są wybrane zgodnie z oczekiwaniami?

Sprawdź stan , ClusterSchedulingPolicySnapshot aby określić, które klastry zostały wybrane, oraz przyczynę ich wyboru.

Jak mogę debugować, jeśli wybrany klaster nie ma oczekiwanych zasobów lub jeśli klasterResourcePlacement nie pobiera najnowszych zmian?

  1. Sprawdź, czy ClusterResourcePlacementRolloutStarted warunek w ClusterResourcePlacement stanie ma wartość true lub false.
  2. Sprawdź, czy ClusterResourcePlacementApplied warunek jest ustawiony na nieznany, false, czy true.
  3. Sprawdź sekcję placementStatuses ClusterResourcePlacement w stanie określonego klastra. Sekcja FailedPlacements powinna zawierać przyczyny błędów aplikacji zasobów.

Jak mogę znaleźć i zweryfikować najnowszy element ClusterSchedulingPolicySnapshot dla wdrożenia clusterResourcePlacement?

Aby znaleźć najnowszą wersję ClusterSchedulingPolicySnapshot wdrożenia interfejsu ClusterResourcePlacement API, uruchom następujące polecenie:

kubectl get clusterschedulingpolicysnapshot -l kubernetes-fleet.io/is-latest-snapshot=true,kubernetes-fleet.io/parent-CRP={CRPName}

Uwaga 16.

W tym poleceniu zastąp {CRPName} ciąg nazwą ClusterResourcePlacement .

Następnie porównaj wartości ClusterSchedulingPolicySnapshot z zasadami ClusterResourcePlacement , aby upewnić się, że są one zgodne, z wyłączeniem numberOfClusters pola ze specyfikacji "ClusterResourcePlacement".

Jeśli typ umieszczania to PickN, sprawdź, czy liczba klastrów żądanych w ClusterResourcePlacement zasadach jest zgodna z wartością number-of-clusters etykiety.

Jak znaleźć najnowszy zasób ClusterResourceBinding?

Następujące polecenie wyświetla listę wszystkich ClusterResourceBindings wystąpień skojarzonych z ClusterResourcePlacementprogramem :

Kubectl get clusterresourcebinding -l kubernetes-fleet.io/parent-CRP={CRPName}

Uwaga 16.

W tym poleceniu zastąp {CRPName} ciąg nazwą ClusterResourcePlacement .

Przykład

  1. Uruchom następujące polecenie, aby wyświetlić stan ClusterResourcePlacement wdrożenia. W tym przypadku ClusterResourcePlacement nazwa to test-crp.

    kubectl describe clusterresourceplacement test-crp
    
  2. Oto przykładowe dane wyjściowe. placementStatuses W sekcji stanu test-crp zwróć uwagę, że ma rozproszone zasoby do dwóch klastrów członkowskich, a zatem ma dwa ClusterResourceBindings wystąpienia:

    status:
      conditions:
      - lastTransitionTime: "2023-11-23T00:49:29Z"
        ...
      placementStatuses:
      - clusterName: kind-cluster-1
        conditions:
          ...
          type: ResourceApplied
      - clusterName: kind-cluster-2
        conditions:
          ...
          reason: ApplySucceeded
          status: "True"
          type: ResourceApplied
    
  3. Aby uzyskać ClusterResourceBindings wartość, uruchom następujące polecenie:

    kubectl get clusterresourcebinding -l kubernetes-fleet.io/parent-CRP=test-crp 
    
    NAME                               WORKCREATED   RESOURCESAPPLIED   AGE
    test-crp-kind-cluster-1-be990c3e   True          True               33s
    test-crp-kind-cluster-2-ec4d953c   True          True               33s
    

    Dane wyjściowe zawierają listę wszystkich ClusterResourceBindings wystąpień skojarzonych z elementem test-crp. Nazwa ClusterResourceBinding zasobu używa następującego formatu:

    {CRPName}-{clusterName}-{suffix}

Jak znaleźć najnowszy zasób ClusterResourceSnapshot?

Aby znaleźć najnowszy zasób ClusterResourceSnapshot, uruchom następujące polecenie:

kubectl get clusterresourcesnapshot -l kubernetes-fleet.io/is-latest-snapshot=true,kubernetes-fleet.io/parent-CRP={CRPName}

Uwaga 16.

W tym poleceniu zastąp {CRPName} ciąg nazwą ClusterResourcePlacement .

Jak mogę znaleźć prawidłowy zasób pracy skojarzony z klastremResourcePlacement?

Aby znaleźć prawidłowy zasób pracy, wykonaj następujące kroki:

  1. Zidentyfikuj przestrzeń nazw klastra członkowskiego i ClusterResourcePlacement nazwę. Format przestrzeni nazw to fleet-member-{clusterName}.

  2. Aby uzyskać zasób pracy, uruchom następujące polecenie:

    kubectl get work -n fleet-member-{clusterName} -l kubernetes-fleet.io/parent-CRP={CRPName}
    

    Uwaga 16.

    W tym poleceniu zastąp {clusterName} wartości i {CRPName} nazwami zidentyfikowanymi w pierwszym kroku.

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.