Freigeben über


Problembehandlung bei der ClusterResourcePlacement-API in Azure Kubernetes Fleet Manager

Dieser Leitfaden zur Problembehandlung hilft Ihnen bei der Lösung ClusterResourcePlacement von API-Objektproblemen, wenn Sie Azure Kubernetes Fleet Manager verwenden. Die Problembehandlung für diese Fehler im Hubcluster erfordert Kenntnisse der folgenden Objekte:

  • ClusterResourceSnapshot
  • ClusterSchedulingPolicySnapshot
  • ClusterResourceBinding
  • Work

Weitere Informationen zu den einzelnen Objekten finden Sie in der API-Referenz.

Vollständige Entwicklung der ClusterResourcePlacement-Bereitstellung

Das Verständnis der Entwicklung und des Status der ClusterResourcePlacement benutzerdefinierten Ressource ist entscheidend für die Diagnose und Identifizierung von Fehlern. Mit dem folgenden Befehl können Sie den Status der ClusterResourcePlacement benutzerdefinierten Ressource anzeigen:

kubectl describe clusterresourceplacement <name>

Weitere Informationen finden Sie unter Verwenden der ClusterResourcePlacement-API zum Verteilen von Ressourcen an Membercluster.

Die vollständige Weiterentwicklung ClusterResourcePlacement lautet wie folgt:

  1. ClusterResourcePlacementScheduled: Gibt an, dass eine Ressource für die Platzierung geplant wurde.

    Wenn "false" angezeigt wird, lesen Sie die Problembehandlung, wenn der Status der "ClusterResourcePlacementScheduled"-Bedingung falsch ist.

  2. ClusterResourcePlacementRolloutStarted: Gibt an, dass der Rolloutprozess begonnen hat.

    Wenn "false" angezeigt wird, lesen Sie die Problembehandlung, wenn der Status der "ClusterResourcePlacementRolloutStarted"-Bedingung "false" lautet.

  3. ClusterResourcePlacementOverridden: Gibt an, dass die Ressource überschrieben wurde.

    Wenn "false" angezeigt wird, lesen Sie die Problembehandlung, wenn der Status der ClusterResourcePlacementOverridden-Bedingung falsch ist.

  4. ClusterResourcePlacementWorkSynchronized: Gibt an, dass Arbeitsobjekte synchronisiert wurden.

    Wenn "false" angezeigt wird, lesen Sie die Problembehandlung, wenn der Status der ClusterResourcePlacementWorkSynchronized-Bedingung falsch ist.

  5. ClusterResourcePlacementApplied: Gibt an, dass die Ressource angewendet wurde.

    Wenn "false" angezeigt wird, lesen Sie die Problembehandlung, wenn der Status der "ClusterResourcePlacementApplied"-Bedingung "false" lautet.

  6. ClusterResourcePlacementAvailable: Gibt an, dass die Ressource verfügbar ist.

    Wenn "false" angezeigt wird, finden Sie Informationen zur Problembehandlung, wenn der Status der "ClusterResourcePlacementAvailable"-Bedingung falsch ist.

Häufig gestellte Fragen

Wie kann ich debuggen, wenn einige Cluster nicht wie erwartet ausgewählt sind?

Überprüfen Sie den Status, ClusterSchedulingPolicySnapshot um zu bestimmen, welche Cluster ausgewählt wurden, und den Grund für die Auswahl.

Wie kann ich debuggen, wenn ein ausgewählter Cluster nicht über die erwarteten Ressourcen verfügt oder wenn ClusterResourcePlacement die neuesten Änderungen nicht erfasst?

  1. Überprüfen Sie, ob die ClusterResourcePlacementRolloutStarted Bedingung im ClusterResourcePlacement Status auf "true" oder "false" festgelegt ist.
  2. Überprüfen Sie, ob die ClusterResourcePlacementApplied Bedingung auf unbekannt, falsch oder true festgelegt ist.
    • Wenn unbekannt, warten Sie, bis der Prozess abgeschlossen ist, da die Ressourcen weiterhin auf den Membercluster angewendet werden. Wenn der Status für eine Weile unbekannt bleibt, öffnen Sie ein Problem, da dies ein ungewöhnliches Verhalten ist.
    • If false, see How to debug ClusterResourcePlacementApplied condition status set to false.
    • Wenn true, überprüfen Sie, ob die Ressource im Hubcluster vorhanden ist.
  3. Überprüfen Sie den placementStatuses Abschnitt im ClusterResourcePlacement Status des jeweiligen Clusters. Der FailedPlacements Abschnitt sollte Gründe für Ressourcenanwendungsfehler angeben.

Wie kann ich den neuesten ClusterSchedulingPolicySnapshot für eine ClusterResourcePlacement-Bereitstellung finden und überprüfen?

Führen Sie den folgenden Befehl aus, um die neueste ClusterSchedulingPolicySnapshot für die ClusterResourcePlacement API-Bereitstellung zu finden:

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

Notiz

Ersetzen Sie {CRPName} in diesem Befehl den ClusterResourcePlacement Namen.

Vergleichen Sie dann die ClusterSchedulingPolicySnapshot Richtlinie mit der ClusterResourcePlacement Richtlinie, um sicherzustellen, dass sie übereinstimmen, mit Ausnahme des numberOfClusters Felds aus der Spezifikation "ClusterResourcePlacement".

Wenn der Platzierungstyp lautet PickN, überprüfen Sie, ob die Anzahl der in der ClusterResourcePlacement Richtlinie angeforderten Cluster mit dem Wert der number-of-clusters Bezeichnung übereinstimmt.

Wie finde ich die neueste ClusterResourceBinding-Ressource?

Der folgende Befehl listet alle ClusterResourceBindings Instanzen auf, die zugeordnet ClusterResourcePlacementsind:

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

Notiz

Ersetzen Sie {CRPName} in diesem Befehl den ClusterResourcePlacement Namen.

Beispiel

  1. Führen Sie den folgenden Befehl aus, um den Status der ClusterResourcePlacement Bereitstellung anzuzeigen. In diesem Fall lautet test-crpder ClusterResourcePlacement Name .

    kubectl describe clusterresourceplacement test-crp
    
  2. Hier ist eine Beispielausgabe: Beachten Sie im placementStatuses Abschnitt des test-crp Status, dass sie Ressourcen an zwei Membercluster verteilt hat und daher zwei ClusterResourceBindings Instanzen hat:

    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. Führen Sie zum Abrufen des Werts ClusterResourceBindings den folgenden Befehl aus:

    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
    

    Die Ausgabe listet alle ClusterResourceBindings Instanzen auf, die zugeordnet test-crpsind. Der ClusterResourceBinding Ressourcenname verwendet das folgende Format:

    {CRPName}-{clusterName}-{suffix}

Wie finde ich die neueste ClusterResourceSnapshot-Ressource?

Um die neueste ClusterResourceSnapshot-Ressource zu finden, führen Sie den folgenden Befehl aus:

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

Notiz

Ersetzen Sie {CRPName} in diesem Befehl den ClusterResourcePlacement Namen.

Wie finde ich die richtige Arbeitsressource, die ClusterResourcePlacement zugeordnet ist?

Führen Sie die folgenden Schritte aus, um die richtige Arbeitsressource zu finden:

  1. Identifizieren Sie den Memberclusternamespace und den ClusterResourcePlacement Namen. Das Format für den Namespace lautet fleet-member-{clusterName}.

  2. Führen Sie zum Abrufen der Arbeitsressource den folgenden Befehl aus:

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

    Notiz

    Ersetzen {clusterName} Sie in diesem Befehl die {CRPName} Namen, die Sie im ersten Schritt identifiziert haben.

Kontaktieren Sie uns für Hilfe

Wenn Sie Fragen haben oder Hilfe mit Ihren Azure-Gutschriften benötigen, dann erstellen Sie beim Azure-Support eine Support-Anforderung oder fragen Sie den Azure Community-Support. Sie können auch Produktfeedback an die Azure Feedback Community senden.