Condividi tramite


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-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 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.