Error de propagación de recursos: ClusterResourcePlacementOverridden es False
En este artículo se describe cómo solucionar problemas ClusterResourcePlacementOverridden
al propagar recursos mediante la ClusterResourcePlacement
API de objetos de Microsoft Azure Kubernetes Fleet Manager.
Síntomas
Cuando se usa el ClusterResourcePlacement
objeto de API en Azure Kubernetes Fleet Manager para propagar recursos, se produce un error en la implementación. El clusterResourcePlacementOverridden
estado se muestra como False
.
Causa
Este problema puede producirse porque o ClusterResourceOverride
ResourceOverride
se crea mediante una ruta de acceso de campo no válida para el recurso.
Caso práctico
En el ejemplo siguiente, se intenta invalidar el rol secret-reader
de clúster propagado por en ClusterResourcePlacement
los clústeres seleccionados.
Sin embargo, ClusterResourceOverride
se crea mediante una ruta de acceso no válida para el recurso.
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
que ClusterRole
secret-reader
se propaga a los clústeres de miembros mediante .ClusterResourcePlacement
Especificaciones de 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
se crea para invalidar ClusterRole
secret-reader
mediante la adición de una nueva etiqueta (new-label
) que tiene el valor new-value
de los clústeres que tienen la etiqueta env: canary
.
Especificaciones de 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
Estado 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
condición es False
, compruebe la placementStatuses
sección para obtener la causa exacta del error.
En esta situación, el mensaje indica que se produjo un error en la invalidación porque falta la ruta de acceso /metadata/labels/new-label
y su valor correspondiente.
En función del ejemplo anterior del rol secret-reader
de clúster, puede ver que la ruta de acceso /metadata/labels/
no existe. Esto significa que labels
no existe.
Por lo tanto, no se puede agregar una nueva etiqueta.
Solución
Para invalidar correctamente el rol secret-reader
de clúster , corrija la ruta de acceso y el valor de ClusterResourceOverride
, como se muestra en el código siguiente:
jsonPatchOverrides:
- op: add
path: /metadata/labels
value:
newlabel: new-value
Esto agrega la nueva etiqueta newlabel
que tiene el valor new-value
a ClusterRole secret-reader
.
Ponte en contacto con nosotros para obtener ayuda
Si tiene preguntas o necesita ayuda, cree una solicitud de soporte o busque consejo en la comunidad de Azure. También puede enviar comentarios sobre el producto con los comentarios de la comunidad de Azure.