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:
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.
ClusterResourcePlacementRolloutStarted: Gibt an, dass der Rolloutprozess begonnen hat.
Wenn "false" angezeigt wird, lesen Sie die Problembehandlung, wenn der Status der "ClusterResourcePlacementRolloutStarted"-Bedingung "false" lautet.
ClusterResourcePlacementOverridden: Gibt an, dass die Ressource überschrieben wurde.
Wenn "false" angezeigt wird, lesen Sie die Problembehandlung, wenn der Status der ClusterResourcePlacementOverridden-Bedingung falsch ist.
ClusterResourcePlacementWorkSynchronized: Gibt an, dass Arbeitsobjekte synchronisiert wurden.
Wenn "false" angezeigt wird, lesen Sie die Problembehandlung, wenn der Status der ClusterResourcePlacementWorkSynchronized-Bedingung falsch ist.
ClusterResourcePlacementApplied: Gibt an, dass die Ressource angewendet wurde.
Wenn "false" angezeigt wird, lesen Sie die Problembehandlung, wenn der Status der "ClusterResourcePlacementApplied"-Bedingung "false" lautet.
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?
- Überprüfen Sie, ob die
ClusterResourcePlacementRolloutStarted
Bedingung imClusterResourcePlacement
Status auf "true" oder "false" festgelegt ist.- If false, see How to debug ClusterResourcePlacementScheduled condition status set to false.
- Wenn "true" ist, fahren Sie mit Schritt 2 fort.
- Ü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.
- Überprüfen Sie den
placementStatuses
Abschnitt imClusterResourcePlacement
Status des jeweiligen Clusters. DerFailedPlacements
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 ClusterResourcePlacement
sind:
Kubectl get clusterresourcebinding -l kubernetes-fleet.io/parent-CRP={CRPName}
Notiz
Ersetzen Sie {CRPName}
in diesem Befehl den ClusterResourcePlacement
Namen.
Beispiel
Führen Sie den folgenden Befehl aus, um den Status der
ClusterResourcePlacement
Bereitstellung anzuzeigen. In diesem Fall lautettest-crp
derClusterResourcePlacement
Name .kubectl describe clusterresourceplacement test-crp
Hier ist eine Beispielausgabe: Beachten Sie im
placementStatuses
Abschnitt destest-crp
Status, dass sie Ressourcen an zwei Membercluster verteilt hat und daher zweiClusterResourceBindings
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
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 zugeordnettest-crp
sind. DerClusterResourceBinding
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:
Identifizieren Sie den Memberclusternamespace und den
ClusterResourcePlacement
Namen. Das Format für den Namespace lautetfleet-member-{clusterName}
.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.