Niepowodzenie propagacji zasobów: ClusterResourcePlacementApplied ma wartość False
W tym artykule omówiono sposób rozwiązywania problemów ClusterResourcePlacementApplied
podczas propagacji zasobów przy użyciu interfejsu ClusterResourcePlacement
API obiektów w usłudze Microsoft Azure Kubernetes Fleet Manager.
Symptomy
W przypadku używania obiektu interfejsu ClusterResourcePlacement
API w usłudze Azure Kubernetes Fleet Manager do propagowania zasobów wdrożenie kończy się niepowodzeniem. Stan ClusterResourcePlacementApplied
jest wyświetlany jako False
.
Przyczyna
Ten problem może wystąpić z jednego z następujących powodów:
- Zasób już istnieje w klastrze i nie jest zarządzany przez kontroler floty. Aby rozwiązać ten problem, zaktualizuj plik YAML manifestu
ClusterResourcePlacement
do użyciaAllowCoOwnership
w programieApplyStrategy
, aby umożliwić kontrolerowi floty zarządzanie zasobem. - Inne
ClusterResourcePlacement
wdrożenie już zarządza zasobem dla wybranego klastra przy użyciu innej strategii zastosowania. ClusterResourcePlacement
Wdrożenie nie stosuje manifestu z powodu błędów składniowych lub nieprawidłowych konfiguracji zasobów. Może to również wystąpić, jeśli zasób jest propagowany za pośrednictwem obiektu koperty.
Kroki rozwiązywania problemów
ClusterResourcePlacement
Wyświetl stan i znajdź sekcjęplacementStatuses
. Sprawdź wartość,placementStatuses
aby określić, które klastry mająResourceApplied
ustawiony warunek naFalse
, i zanotuj ichclusterName
wartość.Work
Znajdź obiekt w klastrze koncentratora. Użyj zidentyfikowanychclusterName
elementów, aby zlokalizowaćWork
obiekt skojarzony z klastrem członkowskim. Aby uzyskać więcej informacji, zobacz How to find the correct Work resource associated withClusterResourcePlacement
.- Sprawdź stan obiektu,
Work
aby zrozumieć konkretne problemy, które uniemożliwiają pomyślną aplikację zasobów.
Analiza przypadku
W poniższym przykładzie ClusterResourcePlacement
próbuje rozpropagować przestrzeń nazw zawierającą wdrożenie do dwóch klastrów członkowskich. Jednak przestrzeń nazw już istnieje w jednym klastrze członkowskim, w szczególności kind-cluster-1
.
Specyfikacje clusterResourcePlacement
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
Stan ClusterResourcePlacement
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
W sekcji dla kind-cluster-1
pola wyjaśnijmessage
, dlaczego zasób nie został zastosowany w klastrze członkowskim. W poprzedniej conditions
sekcji Applied
warunek jest kind-cluster-1
oflagowany jako false
i pokazuje przyczynę NotAllWorkHaveBeenApplied
. Oznacza to, że Work
obiekt przeznaczony dla klastra kind-cluster-1
członkowskiego nie został zastosowany. Aby uzyskać więcej informacji, zobacz How to find the correct Work resource associated with ClusterResourcePlacement
.
Stan pracy typu 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
Work
Sprawdź stan, szczególnie sekcjęmanifestConditions
. Widać, że nie można zastosować przestrzeni nazw, ale wdrożenie w przestrzeni nazw jest propagowane z centrum do klastra członkowskiego.
Rozwiązanie
W takiej sytuacji potencjalnym rozwiązaniem jest ustawienie AllowCoOwnership
wartości na true
wartość w zasadach ApplyStrategy. Należy jednak zauważyć, że ta decyzja powinna zostać podjęta przez użytkownika, ponieważ zasoby mogą nie być udostępniane.
Ponadto możesz przejrzeć dzienniki kontrolera aplikacji Apply Work Controller , aby uzyskać więcej informacji na temat tego, dlaczego zasoby są niedostępne.
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.