Échec de propagation des ressources : ClusterResourcePlacementOverridden a la valeur False
Cet article explique comment résoudre les ClusterResourcePlacementOverridden
problèmes liés à la propagation des ressources à l’aide de l’API ClusterResourcePlacement
objet dans Microsoft Azure Kubernetes Fleet Manager.
Symptômes
Lorsque vous utilisez l’objet ClusterResourcePlacement
API dans Azure Kubernetes Fleet Manager pour propager des ressources, le déploiement échoue. L’état clusterResourcePlacementOverridden
s’affiche sous la forme False
.
Cause
Ce problème peut se produire, car le ClusterResourceOverride
ou ResourceOverride
est créé à l’aide d’un chemin de champ non valide pour la ressource.
Étude de cas
Dans l’exemple suivant, une tentative est effectuée pour remplacer le rôle secret-reader
de cluster propagé par les ClusterResourcePlacement
clusters sélectionnés.
Toutefois, le fichier ClusterResourceOverride
est créé à l’aide d’un chemin d’accès non valide pour la ressource.
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
ClusterRole
secret-reader
Propagé aux clusters membres par le ClusterResourcePlacement
.
Spécifications 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
Il ClusterResourceOverride
est créé pour remplacer le ClusterRole
secret-reader
par l’ajout d’une nouvelle étiquette (new-label
) qui a la valeur new-value
des clusters qui ont l’étiquette env: canary
.
Spécifications 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
État 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
Si la ClusterResourcePlacementOverridden
condition est False
, vérifiez la placementStatuses
section pour obtenir la cause exacte de l’échec.
Dans ce cas, le message indique que le remplacement a échoué, car le chemin d’accès /metadata/labels/new-label
et sa valeur correspondante sont manquants.
En fonction de l’exemple précédent du rôle secret-reader
de cluster, vous pouvez voir que le chemin d’accès /metadata/labels/
n’existe pas. Cela signifie qu’il labels
n’existe pas.
Par conséquent, une nouvelle étiquette ne peut pas être ajoutée.
Résolution
Pour remplacer correctement le rôle secret-reader
de cluster, corrigez le chemin d’accès et la valeur ClusterResourceOverride
dans , comme indiqué dans le code suivant :
jsonPatchOverrides:
- op: add
path: /metadata/labels
value:
newlabel: new-value
Cela ajoute la nouvelle étiquette newlabel
qui a la valeur new-value
à ClusterRole secret-reader
.
Contactez-nous pour obtenir de l’aide
Pour toute demande ou assistance, créez une demande de support ou posez une question au support de la communauté Azure. Vous pouvez également soumettre des commentaires sur les produits à la communauté de commentaires Azure.