Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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.
Motivo
Questo problema può verificarsi perché ClusterResourceOverride o ResourceOverride è stato creato usando un percorso di campo non valido per la risorsa.
Caso di studio
Nell'esempio seguente viene effettuato un tentativo di eseguire l'override del ruolo del cluster secret-reader, propagato da ClusterResourcePlacement ai cluster selezionati.
Tuttavia, viene creato ClusterResourceOverride 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
L'ClusterRolesecret-reader che viene propagato ai cluster membri da ClusterResourcePlacement.
Specifiche del 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
ClusterResourceOverride è creato per eseguire l'override di ClusterRolesecret-reader aggiungendo una nuova etichetta (new-label) con il valore new-value per i cluster che hanno l'etichetta env: canary.
Le specifiche di 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-readerdel 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-readerdel 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, è possibile porre domande al supporto della community di Azure. È anche possibile inviare commenti e suggerimenti sul prodotto alla community di commenti e suggerimenti di Azure.