Errore di propagazione delle risorse: ClusterResourcePlacementOverridden è False
Questo articolo illustra come risolvere i problemi ClusterResourcePlacementOverridden
durante la propagazione delle risorse usando l'API ClusterResourcePlacement
oggetto in Microsoft Azure Kubernetes Fleet Manager.
Sintomi
Quando si usa l'oggetto ClusterResourcePlacement
API in Azure Kubernetes Fleet Manager per propagare le risorse, la distribuzione non riesce. Lo clusterResourcePlacementOverridden
stato viene visualizzato come False
.
Causa
Questo problema può verificarsi perché o ClusterResourceOverride
ResourceOverride
viene creato usando un percorso di campo non valido per la risorsa.
Case study
Nell'esempio seguente viene effettuato un tentativo di eseguire l'override del ruolo secret-reader
del cluster propagato dall'oggetto ClusterResourcePlacement
ai cluster selezionati.
Tuttavia, viene ClusterResourceOverride
creato usando un percorso non valido per la risorsa.
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
Oggetto ClusterRole
secret-reader
propagato ai cluster membri da ClusterResourcePlacement
.
Specifiche clusterResourceOverride
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
Viene ClusterResourceOverride
creato per eseguire l'override ClusterRole
secret-reader
di aggiungendo una nuova etichetta (new-label
) con il valore new-value
per i cluster con l'etichetta env: canary
.
Specifiche clusterResourcePlacement
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
Stato clusterResourcePlacement:
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
Se la ClusterResourcePlacementOverridden
condizione è False
, controllare la placementStatuses
sezione per ottenere la causa esatta dell'errore.
In questo caso, il messaggio indica che l'override non è riuscito perché manca il percorso /metadata/labels/new-label
e il valore corrispondente.
In base all'esempio precedente del ruolo secret-reader
del cluster, è possibile vedere che il percorso /metadata/labels/
non esiste. Ciò significa che labels
non esiste.
Pertanto, non è possibile aggiungere una nuova etichetta.
Risoluzione
Per eseguire correttamente l'override del ruolo secret-reader
del cluster , correggere il percorso e il valore in ClusterResourceOverride
, come illustrato nel codice seguente:
jsonPatchOverrides:
- op: add
path: /metadata/labels
value:
newlabel: new-value
In questo modo viene aggiunta la nuova etichetta newlabel
con il valore new-value
a ClusterRole secret-reader
.
Contattaci per ricevere assistenza
In caso di domande o bisogno di assistenza, creare una richiesta di supporto tecnico oppure formula una domanda nel Supporto della community di Azure. È possibile anche inviare un feedback sul prodotto al feedback della community di Azure.