Fehler bei der Ressourcenverteilung: "ClusterResourcePlacementApplied" ist "False".
In diesem Artikel wird erläutert, wie Sie Probleme beheben ClusterResourcePlacementApplied
können, wenn Sie Ressourcen mithilfe der ClusterResourcePlacement
Objekt-API in Microsoft Azure Kubernetes Fleet Manager verteilen.
Symptome
Wenn Sie das ClusterResourcePlacement
API-Objekt in Azure Kubernetes Fleet Manager zum Verteilen von Ressourcen verwenden, schlägt die Bereitstellung fehl. Der ClusterResourcePlacementApplied
Status wird als False
.
Ursache
Dieses Problem kann aus einem der folgenden Gründe auftreten:
- Die Ressource ist bereits auf dem Cluster vorhanden und wird nicht vom Flottencontroller verwaltet. Um dieses Problem zu beheben, aktualisieren Sie die
ClusterResourcePlacement
YAML-Manifestdatei so, dass sie darinApplyStrategy
verwendetAllowCoOwnership
wird, damit der Flottencontroller die Ressource verwalten kann. - Eine andere
ClusterResourcePlacement
Bereitstellung verwaltet bereits die Ressource für den ausgewählten Cluster mithilfe einer anderen Anwendungsstrategie. - Die
ClusterResourcePlacement
Bereitstellung wendet das Manifest aufgrund von Syntaxfehlern oder ungültigen Ressourcenkonfigurationen nicht an. Dies kann auch auftreten, wenn eine Ressource über ein Umschlagobjekt verteilt wird.
Schritte zur Fehlersuche
- Zeigen Sie den
ClusterResourcePlacement
Status an, und suchen Sie denplacementStatuses
Abschnitt. Überprüfen Sie denplacementStatuses
Wert, um zu ermitteln, auf welche Cluster dieResourceApplied
Bedingung festgelegtFalse
ist, und notieren Sie derenclusterName
Wert. - Suchen Sie das
Work
Objekt im Hubcluster. Verwenden Sie die identifiziertenclusterName
Objekte, um dasWork
Objekt zu finden, das dem Membercluster zugeordnet ist. Weitere Informationen finden Sie unter How to find the correct Work resource associated withClusterResourcePlacement
. - Überprüfen Sie den Status des
Work
Objekts, um die spezifischen Probleme zu verstehen, die eine erfolgreiche Ressourcenanwendung verhindern.
Fallstudie
Im folgenden Beispiel wird versucht, einen Namespace zu verteilen, ClusterResourcePlacement
der eine Bereitstellung an zwei Membercluster enthält. Der Namespace ist jedoch bereits auf einem Membercluster vorhanden, insbesondere kind-cluster-1
.
ClusterResourcePlacement-Spezifikationen
apiVersion: placement.kubernetes-fleet.io/v1beta1
kind: ClusterResourcePlacement
metadata:
name: crp
spec:
policy:
clusterNames:
- kind-cluster-1
- kind-cluster-2
placementType: PickFixed
resourceSelectors:
- group: ""
kind: Namespace
name: test-ns
version: v1
revisionHistoryLimit: 10
strategy:
type: RollingUpdate
ClusterResourcePlacement-Status
status:
conditions:
- lastTransitionTime: "2024-05-07T23:32:40Z"
message:couldn't find all the clusters needed as specified by the scheduling
policy
observedGeneration: 1
reason: SchedulingPolicyUnfulfilled
status: "False"
type: ClusterResourcePlacementScheduled
- lastTransitionTime: "2024-05-07T23:32:40Z"
message: All 2 cluster(s) start rolling out the latest resource
observedGeneration: 1
reason: RolloutStarted
status: "True"
type: ClusterResourcePlacementRolloutStarted
- lastTransitionTime: "2024-05-07T23:32:40Z"
message: No override rules are configured for the selected resources
observedGeneration: 1
reason: NoOverrideSpecified
status: "True"
type: ClusterResourcePlacementOverridden
- lastTransitionTime: "2024-05-07T23:32:40Z"
message: Works(s) are succcesfully created or updated in the 2 target clusters'
namespaces
observedGeneration: 1
reason: WorkSynchronized
status: "True"
type: ClusterResourcePlacementWorkSynchronized
- lastTransitionTime: "2024-05-07T23:32:40Z"
message: Failed to apply resources to 1 clusters, please check the `failedPlacements`
status
observedGeneration: 1
reason: ApplyFailed
status: "False"
type: ClusterResourcePlacementApplied
observedResourceIndex: "0"
placementStatuses:
- clusterName: kind-cluster-2
conditions:
- lastTransitionTime: "2024-05-07T23:32:40Z"
message: 'Successfully scheduled resources for placement in kind-cluster-2 (affinity
score: 0, topology spread score: 0): picked by scheduling policy'
observedGeneration: 1
reason: Scheduled
status: "True"
type: Scheduled
- lastTransitionTime: "2024-05-07T23:32:40Z"
message: Detected the new changes on the resources and started the rollout process
observedGeneration: 1
reason: RolloutStarted
status: "True"
type: RolloutStarted
- lastTransitionTime: "2024-05-07T23:32:40Z"
message: No override rules are configured for the selected resources
observedGeneration: 1
reason: NoOverrideSpecified
status: "True"
type: Overridden
- lastTransitionTime: "2024-05-07T23:32:40Z"
message: All of the works are synchronized to the latest
observedGeneration: 1
reason: AllWorkSynced
status: "True"
type: WorkSynchronized
- lastTransitionTime: "2024-05-07T23:32:40Z"
message: All corresponding work objects are applied
observedGeneration: 1
reason: AllWorkHaveBeenApplied
status: "True"
type: Applied
- lastTransitionTime: "2024-05-07T23:32:49Z"
message: The availability of work object crp-4-work isn't trackable
observedGeneration: 1
reason: WorkNotTrackable
status: "True"
type: Available
- clusterName: kind-cluster-1
conditions:
- lastTransitionTime: "2024-05-07T23:32:40Z"
message: 'Successfully scheduled resources for placement in kind-cluster-1 (affinity
score: 0, topology spread score: 0): picked by scheduling policy'
observedGeneration: 1
reason: Scheduled
status: "True"
type: Scheduled
- lastTransitionTime: "2024-05-07T23:32:40Z"
message: Detected the new changes on the resources and started the rollout process
observedGeneration: 1
reason: RolloutStarted
status: "True"
type: RolloutStarted
- lastTransitionTime: "2024-05-07T23:32:40Z"
message: No override rules are configured for the selected resources
observedGeneration: 1
reason: NoOverrideSpecified
status: "True"
type: Overridden
- lastTransitionTime: "2024-05-07T23:32:40Z"
message: All of the works are synchronized to the latest
observedGeneration: 1
reason: AllWorkSynced
status: "True"
type: WorkSynchronized
- lastTransitionTime: "2024-05-07T23:32:40Z"
message: Work object crp-4-work isn't applied
observedGeneration: 1
reason: NotAllWorkHaveBeenApplied
status: "False"
type: Applied
failedPlacements:
- condition:
lastTransitionTime: "2024-05-07T23:32:40Z"
message: 'Failed to apply manifest: failed to process the request due to a
client error: resource exists and isn't managed by the fleet controller
and co-ownernship is disallowed'
reason: ManifestsAlreadyOwnedByOthers
status: "False"
type: Applied
kind: Namespace
name: test-ns
version: v1
selectedResources:
- kind: Namespace
name: test-ns
version: v1
- group: apps
kind: Deployment
name: test-nginx
namespace: test-ns
version: v1
failedPlacements
Im Abschnitt für kind-cluster-1
die Felder wird erläutert, message
warum die Ressource nicht auf den Membercluster angewendet wurde. Im vorstehenden conditions
Abschnitt wird die Applied
Bedingung für kind-cluster-1
diese gekennzeichnet false
und zeigt den NotAllWorkHaveBeenApplied
Grund an. Dies gibt an, dass das Work
Objekt, das für den Membercluster kind-cluster-1
vorgesehen ist, nicht angewendet wurde. Weitere Informationen finden Sie unter How to find the correct Work resource associated with ClusterResourcePlacement
.
Arbeitsstatus von Art-Cluster-1
status:
conditions:
- lastTransitionTime: "2024-05-07T23:32:40Z"
message: 'Apply manifest {Ordinal:0 Group: Version:v1 Kind:Namespace Resource:namespaces
Namespace: Name:test-ns} failed'
observedGeneration: 1
reason: WorkAppliedFailed
status: "False"
type: Applied
- lastTransitionTime: "2024-05-07T23:32:40Z"
message: ""
observedGeneration: 1
reason: WorkAppliedFailed
status: Unknown
type: Available
manifestConditions:
- conditions:
- lastTransitionTime: "2024-05-07T23:32:40Z"
message: 'Failed to apply manifest: failed to process the request due to a client
error: resource exists and isn't managed by the fleet controller and co-ownernship
is disallowed'
reason: ManifestsAlreadyOwnedByOthers
status: "False"
type: Applied
- lastTransitionTime: "2024-05-07T23:32:40Z"
message: Manifest isn't applied yet
reason: ManifestApplyFailed
status: Unknown
type: Available
identifier:
kind: Namespace
name: test-ns
ordinal: 0
resource: namespaces
version: v1
- conditions:
- lastTransitionTime: "2024-05-07T23:32:40Z"
message: Manifest is already up to date
observedGeneration: 1
reason: ManifestAlreadyUpToDate
status: "True"
type: Applied
- lastTransitionTime: "2024-05-07T23:32:51Z"
message: Manifest is trackable and available now
observedGeneration: 1
reason: ManifestAvailable
status: "True"
type: Available
identifier:
group: apps
kind: Deployment
name: test-nginx
namespace: test-ns
ordinal: 1
resource: deployments
version: v1
Überprüfen Sie den Work
Status, insbesondere den manifestConditions
Abschnitt. Sie können sehen, dass der Namespace nicht angewendet werden konnte, aber die Bereitstellung im Namespace wurde vom Hub an den Membercluster weitergegeben.
Lösung
In dieser Situation besteht eine mögliche Lösung darin, die AllowCoOwnership
true
Richtlinie "ApplyStrategy" festzulegen. Beachten Sie jedoch, dass diese Entscheidung vom Benutzer getroffen werden sollte, da die Ressourcen möglicherweise nicht freigegeben werden.
Darüber hinaus können Sie die Protokolle für den "Arbeitscontroller anwenden" überprüfen, um weitere Einblicke darüber zu erhalten, warum die Ressourcen nicht verfügbar sind.
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.