Fehler bei der Ressourcenverteilung: "ClusterResourcePlacementOverridden" ist "False".
In diesem Artikel wird erläutert, wie Sie Probleme beheben ClusterResourcePlacementOverridden
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 clusterResourcePlacementOverridden
Status wird als False
.
Ursache
Dieses Problem kann auftreten, da das ClusterResourceOverride
Feld mit einem ungültigen Feldpfad für die Ressource erstellt oder ResourceOverride
erstellt wird.
Fallstudie
Im folgenden Beispiel wird versucht, die Clusterrolle secret-reader
zu überschreiben, die von den ClusterResourcePlacement
ausgewählten Clustern weitergegeben wird.
Dies ClusterResourceOverride
wird jedoch mithilfe eines ungültigen Pfads für die Ressource erstellt.
ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"rbac.authorization.k8s.io/v1","kind":"ClusterRole","metadata":{"annotations":{},"name":"secret-reader"},"rules":[{"apiGroups":[""],"resources":["secrets"],"verbs":["get","watch","list"]}]}
creationTimestamp: "2024-05-14T15:36:48Z"
name: secret-reader
resourceVersion: "81334"
uid: 108e6312-3416-49be-aa3d-a665c5df58b4
rules:
- apiGroups:
- ""
resources:
- secrets
verbs:
- get
- watch
- list
Das ClusterRole
secret-reader
, das an die Membercluster durch die ClusterResourcePlacement
.
ClusterResourceOverride-Spezifikationen
spec:
clusterResourceSelectors:
- group: rbac.authorization.k8s.io
kind: ClusterRole
name: secret-reader
version: v1
policy:
overrideRules:
- clusterSelector:
clusterSelectorTerms:
- labelSelector:
matchLabels:
env: canary
jsonPatchOverrides:
- op: add
path: /metadata/labels/new-label
value: new-value
Es ClusterResourceOverride
wird erstellt, um die ClusterRole
secret-reader
Bezeichnung durch Hinzufügen einer neuen Bezeichnung (new-label
) außer Kraft zu setzen, die den Wert new-value
für die Cluster mit der Bezeichnung env: canary
aufweist.
ClusterResourcePlacement-Spezifikationen
spec:
resourceSelectors:
- group: rbac.authorization.k8s.io
kind: ClusterRole
name: secret-reader
version: v1
policy:
placementType: PickN
numberOfClusters: 1
affinity:
clusterAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
clusterSelectorTerms:
- labelSelector:
matchLabels:
env: canary
strategy:
type: RollingUpdate
applyStrategy:
allowCoOwnership: true
ClusterResourcePlacement-Status:
status:
conditions:
- lastTransitionTime: "2024-05-14T16:16:18Z"
message: found all cluster needed as specified by the scheduling policy, found
1 cluster(s)
observedGeneration: 1
reason: SchedulingPolicyFulfilled
status: "True"
type: ClusterResourcePlacementScheduled
- lastTransitionTime: "2024-05-14T16:16:18Z"
message: All 1 cluster(s) start rolling out the latest resource
observedGeneration: 1
reason: RolloutStarted
status: "True"
type: ClusterResourcePlacementRolloutStarted
- lastTransitionTime: "2024-05-14T16:16:18Z"
message: Failed to override resources in 1 cluster(s)
observedGeneration: 1
reason: OverriddenFailed
status: "False"
type: ClusterResourcePlacementOverridden
observedResourceIndex: "0"
placementStatuses:
- applicableClusterResourceOverrides:
- cro-1-0
clusterName: kind-cluster-1
conditions:
- lastTransitionTime: "2024-05-14T16:16:18Z"
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-14T16:16:18Z"
message: Detected the new changes on the resources and started the rollout process
observedGeneration: 1
reason: RolloutStarted
status: "True"
type: RolloutStarted
- lastTransitionTime: "2024-05-14T16:16:18Z"
message: 'Failed to apply the override rules on the resources: add operation
does not apply: doc is missing path: "/metadata/labels/new-label": missing
value'
observedGeneration: 1
reason: OverriddenFailed
status: "False"
type: Overridden
selectedResources:
- group: rbac.authorization.k8s.io
kind: ClusterRole
name: secret-reader
version: v1
Wenn die ClusterResourcePlacementOverridden
Bedingung lautet False
, überprüfen Sie den placementStatuses
Abschnitt, um die genaue Ursache des Fehlers zu erhalten.
In diesem Fall gibt die Meldung an, dass die Außerkraftsetzung fehlgeschlagen ist, da der Pfad /metadata/labels/new-label
und der entsprechende Wert fehlen.
Basierend auf dem vorherigen Beispiel der Clusterrolle secret-reader
können Sie sehen, dass der Pfad /metadata/labels/
nicht vorhanden ist. Dies bedeutet, dass labels
es nicht vorhanden ist.
Daher kann keine neue Bezeichnung hinzugefügt werden.
Lösung
Um die Clusterrolle secret-reader
erfolgreich außer Kraft zu setzen, korrigieren Sie den Pfad und Wert in ClusterResourceOverride
, wie im folgenden Code dargestellt:
jsonPatchOverrides:
- op: add
path: /metadata/labels
value:
newlabel: new-value
Dadurch wird die neue Bezeichnung newlabel
mit dem Wert new-value
clusterRole secret-reader
hinzugefügt.
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.